簡體   English   中英

如何僅基於月份和年份的 select mySQL 記錄沒有全表掃描

[英]How to select mySQL records based only on month and year without full table scan

我需要基於月份和年份的 select 記錄,月份和年份將來自 PHP

所以我有這樣的查詢

SELECT id, created FROM table_name WHERE YEAR(created) = 2020 AND MONTH(created) = 05 LIMIT 500;

這里創建的是日期時間字段,這個查詢的問題是,如果表的記錄較少,但當表記錄增加時,查詢變得非常慢

2020-05 年我的表中有超過 10,000 條記錄,總共有 100 萬條記錄,因此執行此查詢大約需要 11 秒,我懷疑這是因為查詢正在執行全表掃描

幫我提供一個解決方案,讓這個查詢執行得更快?

當在 where 子句 MySQL 中使用 function 時,您在 where 子句中使用 YEAR() 和 MONTH() function 不使用該列的索引來執行查詢。

您可以將查詢更改為下面並嘗試

SELECT id, created FROM table_name WHERE created between '2020-05-01 00:00:00' and '2020-05-31 23:59:59'

** 不要忘記為您的字段添加索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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