|
|
|
| Запрос:
SELECT id FROM tbl WHERE id IN($List);
|
выполняется в разы медленнее, чем:
SELECT id FROM tbl WHERE id=$var1 OR id=$var2 ... OR id=$var10000;
|
Просто интересно. MySQL 5.0.45 | |
|
|
|
|
|
|
|
для: talka
(06.07.2009 в 15:44)
| | у поля `id` выставлен индекс или первичный ключ? | |
|
|
|
|
|
|
|
для: Ильдар
(07.07.2009 в 06:36)
| | >у поля `id` выставлен индекс или первичный ключ?
да.
При этом, если `id` int(11), то IN() работает, как и положено, быстрее OR ... OR,
а вот если `id` char(11), то, при прочих равных условиях, почему-то быстрее отрабатывает OR ... OR
P.S. в первом посте опечатка в "SELECT id FROM". Естественно спрашиваем не только то поле, по которому осуществляется поиск (id). Но сути не меняет. | |
|
|
|
|
|
|
|
для: talka
(07.07.2009 в 17:33)
| | Какие значения $List и $var1, $var2, ...?
Возможно дело вот в чем. Насколько мне не изменяет память если id INT (11) то такое выражение не будет использовать индекс даже если он есть
а так будет
аналогично с OR
индекс не используется
id = '1' OR id = '2' OR id = '3'
|
индекс используется
id = 1 OR id = 2 OR id = 3
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(08.07.2009 в 00:49)
| | независимо от типа поля?
Очень хочется пруфлинк... | |
|
|
|
|
|
|
|
для: Евгений Петров
(08.07.2009 в 00:49)
| | >Какие значения $List и $var1, $var2, ...?
если char(11), то
если int(11), то
аналогично с OR | |
|
|
|
|
автор: . (08.07.2009 в 17:02) |
|
|
для: talka
(08.07.2009 в 14:19)
| | Вас спросили конкретно: в том случае, когда у Вас обнаружилась эта проблема какие значения стояли? А то невольно хочется спросить: а может в одном случае (с IN (...) ) Вы делали запрос к таблице с char-полем, а в другом (с OR) к таблице с int-полем. | |
|
|
|
|
|
|
|
для: talka
(06.07.2009 в 15:44)
| | А вообще чего вы мучаетесь? Сделайте EXPLAIN обоих запросов и давайте сюда. Будем разбираться. | |
|
|
|