Xpoint
   [напомнить пароль]

Странное неиспользование индекса

2003-11-09 13:31:53 [обр] Прокаев2 [досье]

Почему-то не всегда используется индекс.

Таблица
CREATE TABLE isps_3 (
  dat date NOT NULL default '0000-00-00',
  ispId mediumint(8) unsigned NOT NULL default '0',
  visits mediumint(8) unsigned NOT NULL default '0',
  PRIMARY KEY (dat,ispId)
) TYPE=MyISAM;

EXPLAIN SELECT sum( visits ) as counter FROM isps_3 USE INDEX (
PRIMARY ) WHERE dat between '2003-11-01' and '2003-11-02'
ORDER BY `counter` DESC

Говорит key = PRIMARY

Попытка увеличить диапазон
EXPLAIN SELECT sum( visits ) as counter FROM isps_3 USE INDEX (
PRIMARY ) WHERE dat between '2003-11-01' and '2003-11-07'
ORDER BY `counter` DESC
приводит к possible=PRIMARY,key=NULL.

Почему так происходит?

спустя 23 часа [обр] fidget [досье]
потому что если приходиться сканировать более 30% процентов записей из таблицы отпимизатор решает индекс не использовать, т.к. считает что сканирование таблицы будет эффективнее.
можешь использовать force index что бы указать что индекс таки надо использовать.
спустя 1 день 4 часа [обр] Прокаев2 [досье]
Спасибо.
спустя 1 день 23 часа [обр] Закиров Руслан [досье]
Проверял на таблице с ~200000 записей быстрее ли выходит форсировать индекс. Оказалось что не быстрее. Так что мускль все правильно делает.
Powered by POEM™ Engine Copyright © 2002-2005