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 г. 2:09, спустя 12 минут 41 секунду
26 марта 2010 г. 3:05, спустя 56 минут 8 секунд
26 марта 2010 г. 3:11, спустя 6 минут 17 секунд
26 марта 2010 г. 4:32, спустя 1 час 20 минут 53 секунды
раньше я молился за твой сервер
Сейчас объясню. Пример ситуации: интернет магазин, корзина. Из сессий взяли массив добавленных в корзину id'ов товаров, теперь нужно одним запросом получить информацию о каждом из товаров, чтобы в корзине показать их. значит задача наша - объединить все эти id'ы в одном запросе. Раньше я делал так -и так пока не кончатся все товары.select * from table where id= 1 or id = 2 or id =3
а можно это как то сделать проще и по умному?
не знаю даже как написать вопрос чтобы погуглить
26 марта 2010 г. 4:33, спустя 1 минуту 20 секунд
26 марта 2010 г. 4:36, спустя 2 минуты 34 секунды
мы кстати вроде это тестировали (кто ни тьпомнит? вопрос поднимался 100 пудов, к чему пришли не помню) .. и мне кажется что ниухя он не молился )))
phpdude, я думаю оптимизатор запросов за него тоже молился
26 марта 2010 г. 8:38, спустя 4 часа 2 минуты 37 секунд
26 марта 2010 г. 8: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 г. 8:53, спустя 6 минут 41 секунду
26 марта 2010 г. 8:54, спустя 47 секунд
юзает
дак IN(x, …) кажись не юзает индекс
26 марта 2010 г. 9:03, спустя 9 минут 4 секунды
26 марта 2010 г. 9:31, спустя 28 минут 4 секунды
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!