Вопрос о оптимизации MySQL - как ускорить простой запрос
-
16-10-2019 - |
Вопрос
У меня есть очень простая база данных, одна таблица с пятью столбцами (один целочисленный ключ, два варчара, дата и двойной). Таблица содержит 909 000 записей.
Простой запрос как
SELECT t.price
FROM commoddb.tbcommodprices t
WHERE
t.ticker='LAV05 Comdty'
&& t.whichprice='last'
&& t.date = '2005-09-01'
Потребуется более 1,6 секунды, чтобы ответить на местный запрос, который кажется очень медленным. Я был бы признателен за любые предложения по способам ускорить это.
Решение
Вот ваш оригинальный запрос
SELECT t.price
FROM commoddb.tbcommodprices t
WHERE t.ticker='LAV05 Comdty'
AND t.whichprice='last'
t.date = '2005-09-01';
Поскольку в этом запросе есть только одна таблица, все, что вам нужно, это хороший индекс.
ALTER TABLE commoddb.tbcommodprices ADD INDEX (ticker,whichprice,date);
Этот индекс теперь должен быть постоянной частью таблицы, пока вы не решите удалить его, что, как я думаю, вы хотите сделать. Чтобы увидеть таблицу и индексы, просто сделайте это:
SHOW CREATE TABLE commoddb.tbcommodprices\G
Не связан с dba.stackexchange