SQL where條件的優化

2022-05-21 00:58:35 字數 915 閱讀 6002

原則,多數資料庫都是從 左到右的順序處理條件,把能過濾更多資料的條件放在前面,過濾少的條件放後面

sql1: select * from employee

where salary >1000     --條件1,過濾的資料較少

and   dept_id='01'    --條件2,過濾的資料比條件1多

上面的sql就不符合我們的原則了,應該把過濾資料更多的條件放在前面,因此改為下面這樣更好

select * from employee

where   dept_id='01'     --過濾更多資料的條件放在前面

and   salary > 1000

原則,多數資料庫都是從 左到右的順序處理條件,把能過濾更多資料的條件放在前面,過濾少的條件放後面

sql1: select * from employee

where salary >1000     --條件1,過濾的資料較少

and   dept_id='01'    --條件2,過濾的資料比條件1多

上面的sql就不符合我們的原則了,應該把過濾資料更多的條件放在前面,因此改為下面這樣更好

select * from employee

where   dept_id='01'     --過濾更多資料的條件放在前面

and   salary > 1000

SQL where條件順序對效能無影響

無盡空虛 經常有人問到oracle中的where子句的條件書寫順序是否對sql效能有影響,我的直覺是沒有影響,因為如果這個順序有影響,oracle應該早就能夠做到自動優化,但一直沒有關於這方面的確鑿證據。在網上查到的文章,一般認為在rbo優化器模式下無影響 10g開始,預設為rbo優化器模式 而在c...

SQL where 條件順序對效能的影響有哪些

從oracle的資料訪問原理來分析,兩種順序的寫法,執行計畫都是一樣的,都是全表掃瞄,都要依次訪問該錶的所有資料塊,對每乙個資料塊中的行,逐一檢查是否同時符合兩個條件。所以,就不存在先過濾出多少條資料的問題。綜上所述,where子句中條件的順序對效能沒有影響 不管是cbo還是rbo優化器模式 注意,...

sql where 和on 的區別

今天在論壇內看到一篇 面試題,是關於where 和on 的區別的,自己也不懂,在網上搜出一篇文章,加深自己的記憶 轉資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion時,on和where條件的區別如下 1 on條件是在生成臨時...