查詢優化(MySQL優化查詢)

2021-10-20 18:45:06 字數 1388 閱讀 1375

關聯查詢太多join(設計缺陷或不得已的需求)

資料庫伺服器調優及各個引數設定不適當(緩衝、執行緒數等)

慢查詢日誌:找出執行速度慢的sql語句

慢查詢的開啟並捕獲

explain+慢sql分析

show profile查詢sql在mysql伺服器裡面的執行細節和生命週期情況

sql資料庫伺服器的引數調優

索引優化

優化原則:小表驅動大表,即小的資料集驅動大的資料集

當b表的資料集必須小於a表的資料集時,用in優於exists

當a表的資料集必須小於b表的資料集時,用exists優於in

注意:a表與b表的id欄位應建立索引。

select … from table where exists(subquery)

該語法可以理解為:將主查詢的資料,放到子查詢中做條件驗證,根據驗證結果(true或false)來決定主查詢的資料結果是否得以保留。

exists(subquery)只返回true或false,因此子查詢中的select *也可以是select 1或select 『x』,官方說法是實際執行時會忽略select清單,因此沒有區別。

exists子查詢的實際執行過程可能經過了優化而不是我們理解上的逐條對比,如果擔心效率問題,可進行實際檢驗以確定是否有效率問題。

exists子查詢往往也可以用條件表示式/其他子查詢或者join來替代,何種最優需要具體問題具體分析。

order by子句,盡量使用index方式排序,避免使用filesort方式排序

建表sql

案例

filesort和index,index效率高。filesort方式效率較低。

using index,它指mysql掃瞄索引本身完成排序。

order by語句使用索引最左前列

使用where子句與order by子句條件列組合滿足索引最左前列

盡可能在索引列上完成排序操作,遵照索引建的最佳最字首

group by實質是先排序後進行分組,遵照索引建的最佳左字首。

mysql統計查詢優化 Mysql查詢優化

效能涉及的層面很多,但是在操作層面,主要有表結構設計優化 索引優化和查詢優化 查詢的生命週期大致可以分為,從客戶端 到服務端 在伺服器上解析 生成執行計畫 執行 返回結果給客戶端 sql執行流程 具體優化技巧 1.消除外連線 2.消除子查詢 盡量用join代替子查詢,雖說mysql查詢優化器會進行優...

MySQL優化 查詢優化

在每乙個消耗大量時間的查詢中,都能看到一些不必要的額外操作 某些操作被額外地重複了很多次 某些操作執行得太慢等。優化查詢的目的就是減少和消除這些操作所花費的時間。查詢效能低下最基本的原因是訪問的資料太多。所以需要考慮是否向資料庫請求了不需要的資料 1 多表關聯時,或獲取單錶資料時,盡量避免不加思考地...

mysql查詢優化

1 不要在like模式的開始位置使用萬用字元。不要出於習慣而將符號 放在字串的兩側。如果只想找到出現在資料列開始位置的字串,就需要乙個 假定你想找mac開始包含的名字。如macgre和macdel.就需要這樣 where last name like mac 優化程式看到後,會使用索引找到匹配的資料...