(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:管理、備份、監控、分析、優化工具(比較費資源)——引用自做者 慘綠少年