關於Mysql百萬級資料的快速檢索

2021-09-09 08:27:37 字數 834 閱讀 9541

msyql表資料達800多萬,表中多個字段建立索引,某些欄位為復合索引,在執行某個sql個時候,時間達到8秒,實在是不能忍,線上切個分頁都是很慢,仔細研究後發現,索引沒問題,sql寫的有問題。

索引資訊如下

原sql

select * from table where date_format(createtime,』%y-%m-%d』) = #createtime#

根據索引資訊顯示,這種寫法肯定是不走索引的。第一,運用了date_format函式,對索引字段運用函式導致索引失效。第二,圖中的復合索引為status和createtime的復合索引,需滿足最左原則,sql中無status的條件查詢,失效。

修改後

select * from table where creatime between concat(#createtime#, 』 00:00:00』) and concat(#createtime#, 』 23:59:59』) and status in (0,1,2)

修改後的sql是走索引的,去掉了函式,並且增加了status的查詢條件。

總結復合索引滿足最左原則,首先給索引字段套用函式,肯定是會導致索引失效的,其次,若不想加入復合索引的另乙個字段,則可以修改復合索引的順序,如圖中status在前createtime在後,若查詢條件只有status,則是走索引的。

百萬級資料庫記錄下的Mysql快速分頁優化例項

點評 limit 1,111 資料大了確實有些效能上的問題,而通過各種方法給用上where id xx,這樣用上索引的id號可能速度上快點兒。by jack mysql limit分頁慢的解決辦法 mysql limit 優化,百萬至千萬條記錄實現快速分頁 mysql 效能到底能有多高?用了php半...

百萬級資料庫記錄下的Mysql快速分頁優化例項

百萬級資料庫記錄下的mysql快速分頁優化例項 mysql 效能到底能有多高?用了php半年多,真正如此深入的去思考這個問題還是從前天開始。有過痛苦有過絕望,到現在充滿信心!mysql 這個資料庫絕對是適合dba級的高手去玩的,一般做一點1萬篇新聞的小型系統怎麼寫都可以,用xx框架可以實現快速開發。...

百萬級資料多表同步

只說思路!只說思路!只說思路!應用場景 百萬級資料多表同步 實現思路 我用的是redis的list型別,我當初的應用場景是因為平台開始設計時候並沒有打算把所有流水記錄放在乙個表中,而是一種幣種,乙個流水表。像這種 假如說我想對所有幣種進行乙個查詢 條件搜尋 修改 分頁 該怎麼實現?觸發器?unin ...