關於SQL優化

2022-09-23 04:42:08 字數 1168 閱讀 7316

一、

第二部分

calls:呼叫次數

r/call:平均每次查詢耗時情況 v/m:方差均值比

第三部分:詳細sql慢查詢引數統計

rows sent、rows examine 差別越大,表示做了更多的無用功,索引利用效率差

二、線上資料庫開啟了慢查詢日誌記錄功能的話,對資料庫的效能影響大嗎?

肯定有一定的影響,微弱,日誌檔案佔用物理磁碟空間,

三、哪些sql需要優化:

1、查詢次數多,而且佔用時間比較長的sql

2、io大的sql:rows examine數值比較大的sql,(是否有必要?是否可以使用limit)

3、未使用索引或者索引利用率不高的sql(pt-query-digest第三部分 rows sent、rows examine 差別大

四、btree索引的有效利用與限制

索引生效的情況:

1、匹配最左字首

2、全值匹配

3、匹配列字首

4、匹配範圍值

5、精確匹配某列並範圍匹配另外一列

全值匹配我最愛,最左字首要遵守;

帶頭大哥不能死,中間兄弟不能斷;

索引列上少計算,範圍之後全失效;

like百分寫最右,覆蓋索引不寫星;

不等空值還有or,索引失效要少用。

btree索引的限制:

1、如果不是按照索引的最左列開始查詢,則無法使用索引,

2、不能跳過索引中的列

3、如果查詢中有某個列的範圍查詢,則其右邊所有列都無法使用索引優化查詢,

五、分析sql低效的原因

1、explain

①索引利用情況

②排序③臨時表

④回表讀行

⑤行掃描情況

2、profiles sql各個子任務資源消耗情況

六、修改索引

1、是否有無用的索引需要刪除

2、是否可以適當建立組合索引

3、組合索引的順序是否需要調整

4、字首索引

5、覆蓋索引的利用

七、重寫sql

1、是否因為列的計算導致索引失效

2、是否有不需要的列別查詢:select *

3、是否有不適當的關聯關係導致過多讀行

4、是否可以將複雜的sql拆分

5、是否可以指定使用更好的索引:use index

SQL with as

with temp as select from tb order where auditing 2 and auditingtime 20...

SQL Server常用SQL集合

1 sql查詢一年之內的資料記錄 select from 表名 where createdate getdate and createdat...

sql注入分析(sql injection)

場景1 statement select from users where name username 通過對username賦於 or 1...