[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как правильно иcпользовать переменные в запросе
mad/crs
Задача вернуть таблицу вида:
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 написал(а):
Джоины тоже пока не доконца понимаю smile.gif Я думал что теоретически если надо проверить все записи в таблице А и выбрать только те из них у которых к примеру поле activity больше одново и тово же числа ( т.е. при проверке всех записей из таблицы А в цикле это число неменяется а всегда одно и тоже) гораздо быстрее будет сравнивать с переменной а не результатом SELECT ну или в вашем случае JOIN?!

Спустя 11 минут, 21 секунда (16.06.2010 - 10:31) tomash написал(а):
Мы сейчас говорим о составлении запроса к БД или уже о логике приложения?

Спустя 10 минут, 6 секунд (16.06.2010 - 10:41) mad/crs написал(а):
я больше о том даст ли такой подход выигрышь в скорости? или MySQL сам "оптимизирует" такие статичные(незнаю даже как правильно назвать то) условия-запросы при поиске. Т.е. сам поймёт что ненадо для каждой записи таблицы А "вытаскивать" число из другой таблицы если оно, это число, неменяется от записи к записи.
И JOIN клеит-проверяет все строки обеих таблиц в любом случае, разве нет? а зачем если мне надо со второй таблицы только число для условия проверки в А таблице...
мда. тежело объяснить даже что мне надо. smile.gif

Спустя 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 и не только!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.