[英]MySQL optimize query with Date range
我有以下表結構。
id (INT) index
date (TIMESTAMP) index
companyId (INT) index
這是我面臨的問題
companyId 111:在 1 年的時間段內總共有100000行。
companyId 222:在 1 年的時間段內總共有8000行。
如果companyId 111在'2020-09-01 00:00:00' AND '2020-09-06 23:59:59'
之間有100行, '2020-09-01 00:00:00' AND '2020-09-06 23:59:59'
222在同一日期范圍內有2000行,則companyId 111比222,即使它在所選日期范圍內的行數較少。
MySQL 不應該忽略日期范圍之外的所有行,以便查詢變得更快嗎?
這是我正在使用的查詢示例:
SELECT columns FROM table WHERE date BETWEEN '2020-09-01 00:00:00' AND '2020-09-06 23:59:59' AND companyId = 111;
謝謝
我在這里建議一個綜合指數:
CREATE INDEX idx ON yourTable (companyId, date);
您的前提的問題是,雖然您在每列上都有一個索引,但您沒有任何索引完全覆蓋示例查詢的WHERE
子句。 因此,MySQL 甚至可能選擇不使用您的任何索引。 您還可以嘗試顛倒上述索引的順序來比較性能:
CREATE INDEX idx ON yourTable (date, companyId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.