Проверить правильность выборки из БД

Статус
В этой теме нельзя размещать новые ответы.

qwr938

Постоялец
Регистрация
13 Авг 2008
Сообщения
60
Реакции
1
Проверить правильность выборки из БД

Товарищи! Проверьте, пожалуйста, правильность выборки из БД, которую я написал:

$result = mysql_query("SELECT * FROM table WHERE (category='1' OR category='2' OR category='3') AND (color='black' OR color='red') AND year='2010' ORDER BY name DESC LIMIT 20",$db);

Имеем следующее: из таблицы table выбираются все строки, для которых category равно 1, 2 или 3, а цвет чёрный или красный, а год 2010; результаты сортируются по имени от Я до А и в переменную $result заносятся первые 20 результатов.

Таким образом, для таблицы вида

id name category color year
1 Имя1 1 black 2010
2 Имя2 1 black 2009
3 Имя3 2 red 2010
4 Имя4 4 black 2010
5 Имя5 1 grey 2010
6 Имя6 3 black 2010
7 Имя7 1 black 2007
8 Имя8 5 black 2007
9 Имя9 1 black 2010
10 Имя10 1 red 2009

запросу удовлетворяют строки

id name category color year
1 Имя1 1 black 2010
3 Имя3 2 red 2010
6 Имя6 3 black 2010
9 Имя9 1 black 2010

Я правильно составил запрос на выборку?
 
Правильно. А еще лучше (category='1' OR category='2' OR category='3') заменить на category IN (1,2,3). Так короче и удобнее читать.
 
Про category IN (1,2,3) я не знал. Надо попробовать!

Попробовал. Вроде работает. Интересно, а скорость выполнения такая же или больше/меньше?
 
Про category IN (1,2,3) я не знал. Надо попробовать!
Попробовал. Вроде работает. Интересно, а скорость выполнения такая же или больше/меньше?
Скорее всего по моему принципу быстрее, но в случае длинного списка категорий. В данном случае не заметишь разницы. Дело еще в том что часто такие конструкции создаются скриптом по полученному списку, который может иметь быть не 1,2,3 а, например, 1,2,...,100 и представь тогда (category=1 OR category=2 OR ... OR category=100). В таком случае, думаю будет IN(1,2..100) быстрее
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху