Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Странно показывает EXPLAIN
 
 автор: him   (29.06.2010 в 11:38)   письмо автору
 
 

Доброго всем Дня!!!

Делаю простую выборку

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 ?

  Ответить  
 
 автор: Trianon   (29.06.2010 в 11:43)   письмо автору
 
   для: him   (29.06.2010 в 11:38)
 

1. спасибо, что свернули строку запроса.

2. А сколько строк в таблице?
Вернее даже, сколько элемнтов в списке сравнительно с объемом таблицы?
Понятно же, что если эти числа сравнимы, проще плюнуть на индекс и пойти шерстить таблицу по голому телу.

  Ответить  
 
 автор: him   (29.06.2010 в 11:55)   письмо автору
 
   для: Trianon   (29.06.2010 в 11:43)
 

Строк в таблице примерно 500,
но вот список в IN всегда меняется в зависимости от пользователя

Я делал даже два запроса в зависимости от количества элементов списков включенных и исключенных, т.е. если первых больше используется меньший список соответственно в выражениях IN(...) или NOT IN(...).
Но NOT IN мне вообще не понравился.

Хотя может это на моей задаче и не видно. Мускул умный же. Наверное забью. Но хочется спокойствия :)))

  Ответить  
 
 автор: him   (29.06.2010 в 11:58)   письмо автору
 
   для: him   (29.06.2010 в 11:55)
 

Забыл дописать что список в перечислении меняется от 0 до 300-400 и он растет пускай с небольшой скоростью

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования