У меня есть запрос, который был зарегистрирован в файле медленного журнала mysql:
# Time: 2019-06-12T10:23:05.410474Z
# User@Host: coi[coi] @ [172.31.ip.ip] Id: 91
# Query_time: 7.099090 Lock_time: 0.000065 Rows_sent: 0 Rows_examined:
844952
use coi;
SET timestamp=1560334985;
SELECT `trades`.* FROM `trades`
WHERE `trades`.`market_id` = 'omgeth'
AND (created_at > '2019-06-11 18:22:58.310183')
ORDER BY price
LIMIT 1;
Здесь, как оптимизировать этот запрос?добавить индекс в столбец "market_id and made_at"?
почему этот запрос проверил 844952 записей?Что делать, если я добавляю индекс только в столбец "creation_at"?это поможет?
это моя структура таблицы:
(this create table SQL comes from the "show create table" command)
CREATE TABLE `trades` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`price` decimal(32,16) DEFAULT NULL,
`market_id` varchar(10) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_trades_on_created_at` (`created_at`) USING BTREE,
KEY `index_trades_on_market_id` (`market_id`),
KEY `index_trades_on_price` (`price`),
) ENGINE=InnoDB AUTO_INCREMENT=3509954 DEFAULT CHARSET=utf8
спасибо большое!