SQL_where條件的優化


轉載https://www.cnblogs.com/daxiongblog/p/4350583.html

 

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

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語句進行調整,減少計算量和內存需求,提高響應速度。 
  a.對同一表格進行多個選擇運算 
  選擇條件的排列順序對性能有較大影響,因為不僅影響索引的選取,而且關系到臨時表的大小。現以下面的查詢語句為例進行說明: 
  select * from customer 
  where city=’beijing’ and fname=’li’ 
  若表中存在100萬條記錄,其中city=’beijing’的10萬,fname=’li’的為2萬,其中city=’beijing’的 為2千,在SQL Server中,查詢條件的選取是從左到右使用的,因而,執行第一個條件結果返回一個10萬行的臨時表,然后再從中進行選擇,從而得到 最終結果。如果把選擇條件改為where fname=’li’ and city=’beijing’,則先得到一個2萬行的臨時表,再得到同樣的結 果。由此可見,選擇條件的選取極大的影響着查詢語句的計算量,所以,要提高查詢的響應速度,可以將較嚴格的條件寫在前面,較弱的條件放在后面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM