непонятная работа индесов

darth

Новичок
непонятная работа индесов

Здравствуйте.
Столкнулся с вопросом, на который не смог найти ответ, может кто поможет? ОТВЕТОМ

есть таблица, в ней есть два поля date(date) и state(tint)
есть у таблицы индекс (date, state)

есть три запроса
... WHERE date BETWEEN '2009-05-01' AND '2009-05-27' AND state = 99
... WHERE date BETWEEN '2009-03-01' AND '2009-03-27' AND state = 99
... WHERE date BETWEEN '2009-03-01' AND '2009-05-27' AND state = 99

Судя по эксплайну в первом и втором запросах индекс используется, а во третьем, хотя он и "possible_keys", но не используется

почему?

P.S. Версия сервера: 5.0.77
 

Апельсин

Оранжевое создание
слишком много строк удовлетворяет заданному условию, что быстрее просканировать всю таблицу.
 

zerkms

TDD infected
Команда форума
Апельсин
?!?!?!?!?!?!? ты когда на форум вернулась

по теме топика:

SHOW CREATE TABLE + EXPLAIN + статистику

ps: для запроса
date BETWEEN '2009-03-01' AND '2009-05-27' AND state_id = 99
эффективнее будет работать индекс (state_id, date) по понятным причинам.
 

darth

Новичок
Автор оригинала: Апельсин
слишком много строк удовлетворяет заданному условию, что быстрее просканировать всю таблицу.
слишком много это сколько?
~15% - это слишком много?
 

darth

Новичок
Автор оригинала: zerkms
ps: для запроса
SHOW CREATE TABLE + EXPLAIN + статистику
SHOW CREATE TABLE я не смогу дать
но блягодаря этому ps - поудалял ряд полей - индекс стал работать
выводы сделал, буду разбираться


Автор оригинала: zerkms
эффективнее будет работать индекс (state_id, date) по понятным причинам.
спасибо
я уже подумал об этом, пока уперся в первый вопрос
поменял, все заработало как надо
"как трудно жить" (с)

Автор оригинала: zerkms
в mysql это примерно 30%
ага, и тут все понятно, так как я чуток обсчитался :) не 15%, а все 45% получается

спасибо большое, будем искать с перламутровыми :)
 
Сверху