userid,num,activity из таблицы data только для тех строк у которых activity>lactivity.user (таблица user)
SELECT @ltc:=(SELECT lactivity FROM user WHERE userid=33398),userid,num,activity FROM data WHERE
userid=33398 AND activity>@ltc ORDER BY activity DESC;
есть ли смысл, для ускорения работы, добавлять @ltc:=(SELECT activity FROM user WHERE userid=33398)
вместо простово подзапроса activity>(SELECT activity FROM user WHERE userid=33398)
главное интересует правильно ли использую переменные. недоводилось работать с ними как-то.
Спустя 25 минут, 15 секунд (16.06.2010 - 10:03) tomash написал(а):
А не проще так
и без переменных обошлись!
SELECT userid,num,activity FROM data AS d
JOIN user AS u ON u.userid = d.userid
WHERE userid=33398 AND activity>lactivity ORDER BY activity DESC;
и без переменных обошлись!
Спустя 16 минут, 32 секунды (16.06.2010 - 10:20) mad/crs написал(а):
Джоины тоже пока не доконца понимаю Я думал что теоретически если надо проверить все записи в таблице А и выбрать только те из них у которых к примеру поле activity больше одново и тово же числа ( т.е. при проверке всех записей из таблицы А в цикле это число неменяется а всегда одно и тоже) гораздо быстрее будет сравнивать с переменной а не результатом SELECT ну или в вашем случае JOIN?!
Спустя 11 минут, 21 секунда (16.06.2010 - 10:31) tomash написал(а):
Мы сейчас говорим о составлении запроса к БД или уже о логике приложения?
Спустя 10 минут, 6 секунд (16.06.2010 - 10:41) mad/crs написал(а):
я больше о том даст ли такой подход выигрышь в скорости? или MySQL сам "оптимизирует" такие статичные(незнаю даже как правильно назвать то) условия-запросы при поиске. Т.е. сам поймёт что ненадо для каждой записи таблицы А "вытаскивать" число из другой таблицы если оно, это число, неменяется от записи к записи.
И JOIN клеит-проверяет все строки обеих таблиц в любом случае, разве нет? а зачем если мне надо со второй таблицы только число для условия проверки в А таблице...
мда. тежело объяснить даже что мне надо.
И JOIN клеит-проверяет все строки обеих таблиц в любом случае, разве нет? а зачем если мне надо со второй таблицы только число для условия проверки в А таблице...
мда. тежело объяснить даже что мне надо.
Спустя 20 минут, 13 секунд (16.06.2010 - 11:02) tomash написал(а):
Цитата (mad/crs @ 16.06.2010 - 07:41) |
я больше о том даст ли такой подход выигрышь в скорости? или MySQL сам "оптимизирует" такие статичные(незнаю даже как правильно назвать то) условия-запросы при поиске. Т.е. сам поймёт что ненадо для каждой записи таблицы А "вытаскивать" число из другой таблицы если оно, это число, неменяется от записи к записи. |
С точки зрения СУБД эти запросы одинаковы и будут выполняться как два простых запроса
Цитата (mad/crs @ 16.06.2010 - 07:41) |
И JOIN клеит-проверяет все строки обеих таблиц в любом случае, разве нет? а зачем если мне надо со второй таблицы только число для условия проверки в А таблице... мда. тежело объяснить даже что мне надо. smile.gif |
и JOIN в данном случае не клеит а выдает одно значение в зависимости от условия WHERE userid=''
Почитайте про оператор explain!
Спустя 2 часа, 57 минут, 30 секунд (16.06.2010 - 13:59) mad/crs написал(а):
Ок, почитаю, спасибо.
Случаем неподскажете толковую ссылку про Джоины для новичков, почитать?
Случаем неподскажете толковую ссылку про Джоины для новичков, почитать?
Спустя 4 минуты, 50 секунд (16.06.2010 - 14:04) tomash написал(а):
http://www.mysql.ru/docs/ там есть JOIN и не только!