[英]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.