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