sql語句的優化

2021-09-07 18:17:09 字數 741 閱讀 1508

1、使用聯合索引,可以提高查詢排序效率。

2、盡量用子查詢的方式代替連線查詢,因為連線查詢做了隱含的笛卡爾積。

3、如果可以盡量使用between  and,而不是》= and <=這種,因為後者要匹配兩個條件,前者只要匹配乙個條件。

4、where關鍵字後不要對欄位使用函式或四則運算。where條件中的字段必須是表中的原生欄位名,不能是計算出來的欄位名或別名,但可以是表示式。

5、對於like盡量不要讓%在前面,因為會使索引失效。

6、對於索引欄位的模糊查詢'%a%'的形式,在oracle中可以使用instr函式,這個函式也可以實現模糊查詢,且效率比like要高很多。

7、如果有where a>=4和where a>3,那麼我們選擇使用前者,因為後者會先查詢a>=3的資料,再排除a=3的資料。

8、不要使用select *,因為這樣做,資料庫會返回一些隱式字段。

9、對於in操作,大都可以使用exists進行替換,且exists效率更高。

10、對於聯合索引,我們應該按照索引欄位的順序進行where條件擺放的順序,以使資料庫可以使用聯合索引的每一欄位。

11、如果條件允許,可以使用union all替換union,因為後者會為兩個結果分別做隱式的排序。

12、可以使用explain查詢sql的執行計畫,進而分析sql語句。

13、搜尋條件的型別要匹配,如clounm1=a應該改為字串'a',否則會使索引失效。

14、and的優先順序更高,先計算and,後計算or。

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

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

sql語句的優化

1 in 操作符 用in寫出來的sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用in的sql效能總是比較低的,從oracle執行的步驟來分析用in的sql與不用in的sql有以下區別 oracle試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查詢外層的...

SQL語句的優化

通過使用者反饋獲取存在效能問題的sql 通過慢查日誌獲取存在效能問題的sql 實時獲取存在效能問題的sql mysqldumpslow pt query digest pt query digest explain h 127.0.0.1,u root,p p ssword slow mysql.l...