[英]MySQL search very slow, bad query or indexes?
我們的應用程序中有一個表格,它非常龐大。 輕松地百萬行。
結構基本上如下:
SERIES_ID | YEAR | DAY_SINCE_EPOCH | HOUR | MINUTE | VALUE
我們在YEAR和DAY_SINCE_EPOCH上都有索引。
問題是某些查詢非常慢,例如:
SELECT
...
WHERE
SERIES_ID = 3 AND
DAY_SINCE_EPOCH < 16000 AND
YEAR = 2012
ORDER BY
DAY_SINCE_EPOCH DESC,
HOUR DESC,
MINUTE DESC
LIMIT 1
在具有2M行的表中,這大約需要10秒,而在具有18M行的表中,則需要20秒以上。
目的是在16000天之前找到系列3的最后一條記錄。YEAR = 2012可以加快查找速度。
所以我想知道,我們是否正確設置了索引? 也許沒有年份指數會更快? 或添加了SERIES_ID索引或類似內容?
或者只是重組查詢會有所幫助?
任何想法如何加快搜索將受到歡迎!
該索引可能會有所幫助:
> create index on your_table(series_id, day_since_epoch, year);
檢查這些條件
SERIES_ID = 3 AND
DAY_SINCE_EPOCH < 16000 AND
YEAR = 2012
當您更新表格時(例如,保存新記錄),然后將“ true / false”信息保存在“ bit”列上,然后像進行檢查一樣
where checked=1 .....
SERIES_ID | YEAR | DAY_SINCE_EPOCH | HOUR | MINUTE | VALUE | checked
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.