常見SQL語句優化

2021-08-20 08:20:03 字數 1322 閱讀 5391

一:常用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)

因為第一種方式大大減少了客戶端和資料庫的連線時間,關閉等消耗。

2,優化order by語句

mysql的排序方式分2種分別是

了解了mysql排序方式,優化目標就清晰了:儘量減少額外的排序,通過索引直接返回有序資料。

3,優化group by語句

預設情況下,mysql對所有group by col1,col2,.....的字段進行排序,這與在查詢中制定order by col1,col2。。。類似,因此,如果顯式包括乙個包含相同列的order by 子句,則對mysql的實際效能沒有影響,如果查詢包含group by 但使用者想要避免排序帶來的效能消耗,則可以制定order by null禁止排序。

4,優化巢狀查詢

子查詢,可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另外乙個查詢中,使用子查詢可以一次性地完成很多邏輯上需要多個步驟才能完成的sql操作,同時也可以避免事務或者表死鎖,並且寫起來也很容易,但是,在某些情況下乙個子查詢可以用更加效率的join替代。連線(join)之所以更有效率一些,是因為mysql不需要在記憶體中建立臨時表來完成這個邏輯上需要2個步驟的工作。

5,mysql如何優化or條件

對於含有or的查詢子句,如果要利用索引,則or間的每個條件都必須使用索引,如果沒有索引,則該考慮增加索引。

6,優化分頁查詢

方式一:在索引上完成排序分頁的操作,左後根據主鍵關聯回原表查詢所需要的其他列內容,例如,對電影表film根據標題title排序後取某一頁的資料,直接查詢的時候,能夠從explain的輸出結果中看到優化器實際做了全表掃瞄,處理效率不高:

修改後的語句

第二種優化思路

select payment_id from payment  where payment_id < 15460 order by payment_id desc limit 10。

常見SQL語句優化

隨著業務的發展,資料庫資料量與日俱增,這時候進行通過sql運算元據庫就會帶來一系列待優化的問題。對於sql語句的優化,這裡我大致的把它劃分為兩個方面 一方面為導致跳過索引而進行全表掃瞄,另一方面為非全表掃瞄引起的sql優化。一 導致跳過索引而進行全表掃瞄的幾種情況 1 like做模糊查詢時使用了雙百...

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 ...