У меня странное поведение с моим MySQL запросом ниже:
SELECT domain_id, domain_name, domain_lastupdate
FROM domains
WHERE domain_id > 300000 LIMIT 2000
занимает ~ 15 секунд ...
, в то время как
SELECT domain_id, domain_name
FROM domains
WHERE domain_id > 300000 LIMIT 2000
занимает ~ 0,05 секунды..
Я пробовал разные идентификаторы с разными ограничениями, делая один перед другим, и наоборот, чтобы не получить кэшированные результаты, но я получаю резкие различия во времени.
У меня есть1 индекс для domain_id, 1 для domain_name, но ни один с обоими столбцами ...
Я просто не понимаю ...
#
domain_lastupdate - это простой столбец Date.
Вот вывод EXPLAIN обоих запросов:
explain SELECT domain_id, domain_name, domain_lastupdate FROM domains WHERE domain_id > 255000 LIMIT 500;
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+-------------+
| 1 | SIMPLE | domains | range | UN_domainid | UN_domainid | 4 | NULL | 12575357 | Using where |
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+-------------+
1 row in set (0.00 sec)
второй:
explain SELECT domain_id, domain_name FROM domains WHERE domain_id > 255000 LIMIT 500;
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+--------------------------+
| 1 | SIMPLE | domains | range | UN_domainid | UN_domainid | 4 | NULL | 12575369 | Using where; Using index |
+----+-------------+---------+-------+---------------+-------------+---------+------+----------+--------------------------+
1 row in set (0.01 sec)
Есть идеи, почему первый не использует индекс?