Имеется таблица docs с 500 000 записей:
id | doc | base | date
Индекс: (base, date)
Задача: найти максимальное значение date с определенным значением base
Пробовал запросы:
1. SELECT `date` FROM `docs` WHERE `base` = 'b1' ORDER BY `date` DESC LIMIT 1;
Время запроса: 0.0009
EXPLAIN:
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| 1 | SIMPLE | docs | NULL | ref | base_date | base_date | 78 | const | 7157 | 100.00 | Using where; Using index |
1. SELECT MAX(`date`) FROM `docs` WHERE `base` = 'b1'
Время запроса: 0.0006
EXPLAIN:
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
Независимо от используемого варианта запроса, переменная состояния "Handler read rnd next" каждый раз увеличивается на 9827.
Стоит ли обращать на это внимание? Как можно оптимизировать?
Вопрос задан
более трёх лет назад
282 просмотра