簡體   English   中英

MySQL 使用日期范圍優化查詢

[英]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 111222,即使它在所選日期范圍內的行數較少。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM