sql查詢優化7種方法

2021-10-10 10:53:34 字數 1428 閱讀 5650

如何盡可能利用上索引

先where以後再關聯(減少關聯的資料量)

子查詢盡量不要放在被驅動表,有可能使用不到索引;

left join時,盡量讓實體表作為被驅動表。

能夠直接多表關聯的盡量直接關聯,不用子查詢

頻繁作為查詢條件的字段應該建立索引(where)

查詢中與其它表關聯的字段,外來鍵關係建立索引(關聯條件)

單鍵/組合索引的選擇問題, 組合索引價效比更高

查詢中排序的字段,排序欄位若通過索引去訪問將大大提高排序速度(排序)

查詢中統計或者分組字段(group by 或者 統計字段)

表記錄太少

經常增刪改的表或者字段

where條件裡用不到的字段不建立索引

過濾性不好的不適合建索引

復合索引遵循最佳左字首法則。

復合索引列上不能有範圍查詢

建議:將可能做範圍查詢的字段的索引順序放在最後

不要在索引列上做任何計算

不在索引列上做任何操作(計算、函式、(自動or手動)型別轉換),會導致索引失效而轉向全表掃瞄。

字串不加單引號,則會在name列上做一次轉換!

like的前後模糊匹配

使用不等於(!= 或者<>)的時候

mysql 在使用不等於(!= 或者<>)時,有時會無法使用索引會導致全表掃瞄

欄位的is not null 和 is null

減少使用or

使用union all或者union來替代

最左字首要遵守,範圍之後全失效;(復合索引)

索引列上少計算,var引號不可丟;(計算影響)

like百分寫最右,覆蓋索引不寫*;(4種情況)

不等空值還有or,索引影響要注意;

優化儲存過程7種方法

優化儲存過程有很多種方法,下面介紹最常用的7種。1.使用set nocount on選項 我們使用select語句時,除了返回對應的結果集外,還會返回相應的影響行數。使用set nocount on後,除了資料集就不會返回額外的資訊了,減小網路流量。2.使用確定的schema 在使用表,儲存過程,函...

sql優化的幾種方法

1.盡量不要使用 select from t 用具體的字段列表代替 不要返回用不到的任何字段。2.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。3.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行...

SQL優化的幾種方法

1 盡量避免使用select 返回無用的字段會降低查詢效率。如下 select from test 優化方式 使用具體的字段代替 只返回使用到的字段。2 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。3 盡量避免進行null值的判斷,會導致資...