(1.10)SQL優化——mysql 常見SQL優化

(1.10)經常使用SQL優化mysql

insert優化、order by 優化sql

 

一、insert 優化shell

  

 

二、order by 優化數據庫

【2.1】mysql排序方式:bash

  (1)索引掃描排序:經過有序索引掃描直接返回有序數據session

  (2)filesort排序:全部不是索引掃描返回結果的數據均爲filesort排序工具

  filesort優化:性能

    

 

 三、優化group by 測試

  

  

 

  

  

 四、子查詢優化優化

  在!= 操做的子查詢中,能夠用left join + is null 來優化

五、or優化

  or 在同字段下能夠改爲 in

  在不一樣字段下可使用Union all

 

六、limit優化

 

【6.1】子查詢優化/join(id爲索引字段)

       這種方式先定位偏移位置的 id,而後日後查詢,這種方式適用於 id 遞增的狀況。

    

SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20      或者 SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id

 

 

【6.2】ID限定優化

      

使用 id 限定優化

  這種方式假設數據表的id是連續遞增的,則咱們根據查詢的頁數和查詢的記錄數能夠算出查詢的id的範圍,

  可使用 id between and 來查詢:

 
select * from orders_history where type=2 
and id between 1000000 and 1000100 limit 100; 也能夠      select * from orders_history where id >= 1000001 order by id asc limit 100;
 

 

 

優化工具之數據庫層面

 

檢查問題經常使用的 12 個工具:
MySQL
mysqladmin:MySQL 客戶端,可進行管理操做
mysqlshow:功能強大的查看 shell 命令
SHOW [SESSION | GLOBAL] variables:查看數據庫參數信息
SHOW [SESSION | GLOBAL] STATUS:查看數據庫的狀態信息
information_schema:獲取元數據的方法
SHOW ENGINE INNODB STATUS:Innodb 引擎的全部狀態
SHOW PROCESSLIST:查看當前全部鏈接的 session 狀態
explain:獲取查詢語句的執行計劃
show index:查看錶的索引信息
slow-log:記錄慢查詢語句
mysqldumpslow:分析 slowlog 文件的工具

 

不經常使用但好用的 7 個工具:Zabbix:監控主機、系統、數據庫(部署 Zabbix 監控平臺)pt-query-digest:分析慢日誌MySQL slap:分析慢日誌sysbench:壓力測試工具MySQL profiling:統計數據庫總體狀態工具 Performance Schema:MySQL 性能狀態統計的數據workbench:管理、備份、監控、分析、優化工具(比較費資源)——引用自做者 慘綠少年

相關文章
相關標籤/搜索