Я только что обнаружил следующее поведение MySQL с использованием движка InnoDB.Есть ли способ объяснить существенную разницу во времени выполнения?
Первый запрос:
SELECT ask FROM history_time WHERE ask> 1.5790 AND timestamp BETWEEN 1207000800290 AND 1207690900290
Время выполнения: 0,715 с
EXPLAIN: '1', 'SIMPLE', 'history_time', 'range', 'PRIMARY,timestamp,ask,ask_2', 'PRIMARY', '8', NULL, '3278190','Using where'
Второй запрос:
SELECT ask FROM history_time WHERE ask> 1.5790 AND timestamp > 1207000800290
Время выполнения: 0,002 с
EXPLAIN: '1', 'SIMPLE', 'history_time', 'range', 'PRIMARY,timestamp,ask,ask_2', 'ask', '4', NULL, '5850604', 'Using where; Using index'
Третий запрос:
SELECT ask FROM history_time WHERE ask> 1.5790 AND timestamp < 1207690900290
Время выполнения: 0,651 с
EXPLAIN: '1', 'SIMPLE', 'history_time', 'range', 'PRIMARY,timestamp,ask,ask_2', 'PRIMARY', '8', NULL, '3278190', 'Using where'
ОБЪЯСНИТЕ, что говорит мне, что только второй запрос использует индекс.Моя таблица содержит 83 млн.строк, первичный ключ является меткой времени.У меня также есть индекс на (спросить, метка времени) и один на запрос (который является избыточным и только там для целей тестирования).Почему MySQL использует индекс только для второго запроса?