Вопрос о оптимизации MySQL - как ускорить простой запрос

dba.stackexchange https://dba.stackexchange.com/questions/11735

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top