|
|
|
| Доброго всем Дня!!!
Делаю простую выборку
SELECT *
FROM `vi_img2doc`
WHERE
rubric_location IN ('1089p','1188p','1057p','1221p','1231p','1081','1234','1006','1190p','1066','1007','1184','1039p',
'1151p','1005','1008','1292p','1293p','1295p','1296p','1298p','1299p','1048p','1049p','1050p','1051p',
'1052p','1053p','1054p','1055p','1056p','1214p','1059p','1215p','1216p','1217p','1218p','1219p',
'1220p','1064','1047p','1189','1222p','1223p','1224p','1225p','1226p','1227p','1228p','1229p','1230p')
|
из таблицы с двумя полями:
CREATE TABLE `vi_img2doc` (
`id` int(11) NOT NULL auto_increment,
`img_id` int(11) NOT NULL default '0',
`rubric_location` varchar(6) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `img_id` (`img_id`),
KEY `rubric_location` (`rubric_location`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 ;
|
Не нравится то что EXPLAIN показывает что мускул использует индекс rubric_location только при небольшом количестве элементов в перечислении IN(...) (Примерно до 20).
Если использую большое количество элементов в перечислении IN(...):
USE INDEX (rubric_location) - не использует индекс
FORCE INDEX (rubric_location) - использует индекс.
Теперь в раздумьях, может мускул сам оценивает ситтуацию - использовать индекс или нет ?
Или принудительно заставить его используя FORCE INDEX ? | |
|
|
|
|
|
|
|
для: him
(29.06.2010 в 11:38)
| | 1. спасибо, что свернули строку запроса.
2. А сколько строк в таблице?
Вернее даже, сколько элемнтов в списке сравнительно с объемом таблицы?
Понятно же, что если эти числа сравнимы, проще плюнуть на индекс и пойти шерстить таблицу по голому телу. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2010 в 11:43)
| | Строк в таблице примерно 500,
но вот список в IN всегда меняется в зависимости от пользователя
Я делал даже два запроса в зависимости от количества элементов списков включенных и исключенных, т.е. если первых больше используется меньший список соответственно в выражениях IN(...) или NOT IN(...).
Но NOT IN мне вообще не понравился.
Хотя может это на моей задаче и не видно. Мускул умный же. Наверное забью. Но хочется спокойствия :))) | |
|
|
|
|
|
|
|
для: him
(29.06.2010 в 11:55)
| | Забыл дописать что список в перечислении меняется от 0 до 300-400 и он растет пускай с небольшой скоростью | |
|
|
|
|