沒錯SQL小菜鳥又來了
這次遇到一個白癡錯誤~~
因為以前沒學好(根本沒在聽課的說~~
測次採的是SQL中
in 的錯誤~~
經過前大同事的指導才知道~~
原來in 會讓資料搜尋中減少效能~~
概念上就是
有一筆資料, 然後跑for迴圈 將in 的資料跑過一次
EX:
資料表A(col1,col2,col3)
A AA AAA
B BB BBB
C CC CCC
select * from A
where col3 in ('CCC','BBB')
跑法為
資料庫
1.先找到AAA,然後逐一比對CCC、BBB,沒有在換下一筆
2.找到BBB,然後比對CCC、BBB.....
不出意外其跑的次數為3*2 = 6
若改為
select * from A
wherer (col3 ='CCC' or col3='BBB' )
資料庫只跑3次,不會再跑迴圈~~
以上為我個人理解的部分
當然說in 就不用嗎?
其實還是可以用,用於快速查詢,直覺的下sql較快
但真的要用在查詢時,建議還是做個轉換!!
參考資料:
https://tomkuo139.blogspot.com/2009/08/oracle-select-sql-tuning.html
http://syunguo.blogspot.com/2013/04/sqlgroup-by-distinct.html
0 意見