常見SQL語句優化

2021-09-25 08:39:38 字數 1186 閱讀 8809

隨著業務的發展,資料庫資料量與日俱增,這時候進行通過sql運算元據庫就會帶來一系列待優化的問題。

對於sql語句的優化,這裡我大致的把它劃分為兩個方面:一方面為導致跳過索引而進行全表掃瞄,另一方面為非全表掃瞄引起的sql優化。

一:導致跳過索引而進行全表掃瞄的幾種情況

1)like做模糊查詢時使用了雙百分號(%%)

比如:select * from weblogs where search_name like '%張三%'

建議使用:select * from weblogs where search_name like '張三%'

2)在where後進行null判斷

比如:select * from weblogs where search_name is null

建議新增為該列設定預設值為0  select * from weblogs where search_name =0

3)使用in/not in

比如:select * from weblogs where id in (1,2,3)

對於這種連續性的值得查詢 可以使用between and

select * from weblogs where id between 1 and 3

也可以使用exists 代替 in , not exists 代替not in

4)where後面的字段進行表示式操作

比如: select * from weblogs where substring(search_name,1,3)='[張三'

5)使用or連線查詢條件

比如  select * from weblogs where search_name ='張三' or search_name = '李四'

可以修改為  select * from weblogs where search_name='張三'  union all

select * from weblogs where search_name='李四'

二:非全表掃瞄引起的sql優化的幾種情況

1)在where,order by 和group by 後面頻繁查詢的字段上新增索引

2)需要查詢連續屬性值下某個範圍內的資料,使用between and

3)避免使用select *進行查詢,這樣會返回多於的字段,降低查詢效率

4)一張表裡的索引不宜超過6個,因為索引會佔空間

常見SQL語句優化

一 常用sql的優化 1,優化大批量insert語句 insert into test values 1,2 2,3 6,7 不要使用insert into test values 1,2 insert into test values 2,3 insert into test values 6,7...

SQL語句常見優化方法

在查詢語句前使用explain關鍵字 變體 explain extended select show warnings 檢視優化後的語句 方式一 select from a join b using 兩張表有相同的字段 方式二 select from a join b on 同 select fro...

SQL 語句優化 OR 語句優化案例

從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...