MySQL - странности с индексом и выборкой с IN

246
24 марта 2017, 23:37

Таблица на 120к записей.

Индексы: ad_id (PRIMARY), pmask (INT 11), udate (TIMESTAMP)

SELECT ad_id FROM ad WHERE pmask IN (1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,22,23,25,26,27,29,30,31,16) AND udate<'2017-03-22 22:18:34' AND publish=1 ORDER BY udate DESC LIMIT 0, 3

Оптимизатор MySQL по умолчанию берет за индекс udate, EXPLAIN Показывает type=range, rows=49225 - но сам запрос выполняется 0,5-0,6 сек - что неприемлемо

Если в запрос добавить FORCE INDEX(pmask) - EXPLAIN выдает type=all, rows=1220425 , но сам запрос выполняется 0,0009 сек

Подскажите что за глюк - проверял на двух хостингах - проблема аналогична

На денвере без FORCE INDEX берет по умолчанию индекс pmask и запрос летает EXPLAIN type=range, rows=25

READ ALSO
Не получается подключиться к mysql в golang

Не получается подключиться к mysql в golang

Как правильно задавать настройки подключения к БД? Параметры настроек правильные, подключался через терминалНа странице выводит только:...

434
Создание слайдера - Java

Создание слайдера - Java

Посоветуйте плагин или как создавать слайдер изображение на языке JavaНеобходим слайдер из 5-6 картинок,

257
Какая разница между interrupted() и isInterrupted()

Какая разница между interrupted() и isInterrupted()

Вроде, оба метода проверяют флаг, хотел ли прервать какой-то поток, тот поток, в котором метод был вызванПоправьте, если я не прав

309
main java IntelliJ IDEA

main java IntelliJ IDEA

Здравствуйте уважаемые форумчане, извиняюсь сразу за глупый вопрос, но ответа пока на него не нашел

361