sql裏Where條件順序

以前的理解: sql語句裏where後面的條件是否分先後順序的 ,比如 A and B and C和 C and B and A 是一樣,不像C語言 A && B 與B && A 執行效果不一樣,是從左向右的。

爲什麼會得出這樣的結論呢?也就是論據是什麼?

如果條件有三列a,b,c;b列上有索引 那麼Where a='a' and b='b' and c='c' 與Where c='c' and b='b' and c='c' 都會優先選b列,因爲b列有索引,所以不會是從左到右,或從右到左

 

現在的理解: sql語句裏where後面的條件運算是有先後順序的,不是從左向右或者從右向左,這個具體是由編譯器定的,也就是最後的執行計算裏面會有先後順序的。可能你交換條件的順序生成的執行計劃大體沒有變化,但是計劃裏面的謂詞是可能有變化的,這裏就體現了執行條件的順序。

其實想細在計算機上執行的一條一條指定怎麼會沒有先後順序呢,只是這個順序我們一下說不出先執行哪個後執行哪個而已。

----------分割線-------------

我測試一下代碼格式,每次都不對

print "Hello"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章