select * from table where id= 1 or id = 2 or id =3
и так пока не кончатся все товары.а можно это как то сделать проще и по умному?
не знаю даже как написать вопрос чтобы погуглить
Форум → Программирование → PHP для идиотов → mysql как сделать выборку если условие - массив
Страницы: ← Следующая страница →
select * from table where id= 1 or id = 2 or id =3
и так пока не кончатся все товары.Март 26, 2010, 12:09 п.п., спустя 12 минут 41 секунду
Март 26, 2010, 1:05 п.п., спустя 56 минут 8 секунд
Март 26, 2010, 1:11 п.п., спустя 6 минут 17 секунд
Март 26, 2010, 2:32 п.п., спустя 1 час 20 минут 53 секунды
раньше я молился за твой сервер
Сейчас объясню. Пример ситуации: интернет магазин, корзина. Из сессий взяли массив добавленных в корзину id'ов товаров, теперь нужно одним запросом получить информацию о каждом из товаров, чтобы в корзине показать их. значит задача наша - объединить все эти id'ы в одном запросе. Раньше я делал так -и так пока не кончатся все товары.select * from table where id= 1 or id = 2 or id =3
а можно это как то сделать проще и по умному?
не знаю даже как написать вопрос чтобы погуглить
Март 26, 2010, 2:33 п.п., спустя 1 минуту 20 секунд
Март 26, 2010, 2:36 п.п., спустя 2 минуты 34 секунды
мы кстати вроде это тестировали (кто ни тьпомнит? вопрос поднимался 100 пудов, к чему пришли не помню) .. и мне кажется что ниухя он не молился )))
phpdude, я думаю оптимизатор запросов за него тоже молился
Март 26, 2010, 6:38 п.п., спустя 4 часа 2 минуты 37 секунд
Март 26, 2010, 6:46 п.п., спустя 4 минуты 8 секунд
mysql> explain select id from test where id = 201641 or id = 201642 or id = 201199;
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
| 1 | SIMPLE | customers | range | PRIMARY | PRIMARY | 4 | NULL | 3 | Using where; Using index |
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
1 row in set (0.00 sec)
mysql> explain select id from test where id in (201641, 201642, 201199);
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
| 1 | SIMPLE | customers | range | PRIMARY | PRIMARY | 4 | NULL | 3 | Using where; Using index |
+—-+————-+———–+——-+—————+———+———+——+——+————————–+
1 row in set (0.00 sec)
Март 26, 2010, 6:53 п.п., спустя 6 минут 41 секунду
Март 26, 2010, 6:54 п.п., спустя 47 секунд
юзает
дак IN(x, …) кажись не юзает индекс
Март 26, 2010, 7:03 п.п., спустя 9 минут 4 секунды
Март 26, 2010, 7:31 п.п., спустя 28 минут 4 секунды
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!