今天嘗試對一張mysql表做查詢優化, 500w資料
但是發現加了索引比不加索引使用全表掃瞄還慢, 上網查, 據說是因為需要回表, 因為沒有用到 using index(覆蓋索引), 而回表查詢是隨機讀
1. 如果回表查詢的資料是在磁碟, 隨機讀將會非常慢, 導致使用索引以後的查詢速度是30s左右
2. 如果回表查詢的資料實在記憶體, 則會比全表掃瞄快
我這裡全表掃瞄的時間是3s
如果我將查詢中所有的字段都加入索引, 則會使用覆蓋索引(using index), 此時查詢時間縮減為 0.5s
但是這樣有個很大限制, 就是查詢的字段必須全都在索引中, 否則不會使用覆蓋索引, 並且, 索引將會變得非常大
mysql 效能優化簡述
用 explain 分析sql語句。使用max 函式時,給max的字段加索引來優化 把子查詢優化為連表查詢,但要注意有重複資料 優化limit技巧 1.使用有索引的列或主鍵進行order by 2.記錄上一次返回的最大id用where id last max id 來過濾資料 關於索引欄位的優化 出...
mysql效能優化簡書 mysql 效能優化
1 伺服器層面 引數配置優化 減少客戶端使用連線數 可考慮使用快取 2 架構層面 讀寫分離 分庫 分表 分片 3 業務sql層面 檢視慢查詢日誌 sql優化 show variables like slow query 預設關閉 檢視日誌路徑 show variables like long que...
mysql效能優化簡書 MySQL效能優化
1 合理的建立及使用索引,索引不宜過多,過多的索引會占用更多的空間,而且每次增 刪 改操作都會重建索引。2 合理的冗餘字段 盡量建一些大表,考慮資料庫的三正規化和業務設計的取捨 3 select語句中盡量不要使用 count 從表中讀取越多的資料,查詢會變得更慢,因為它會增加了磁碟操作時間和資料網路...