我不知道這是不是合適的論壇。可以說我有以下內容:SQL查詢:布爾處理
SELECT *
FROM MyTable m
WHERE ((A OR B) AND (C OR D))
假設A,B,C,d是適當的布爾子句,每個需要上的行級基礎上進行評價。讓我們也假設沒有索引。
這是邏輯上等同於:
SELECT *
FROM MyTable m
WHERE (A AND C)
OR (A AND D)
OR (B AND C)
OR (B AND D)
是否有性能上的優勢,以一方?我們正在使用MSSql-2008。
Intersting question - +1 – XIVSolutions 2012-01-13 04:24:55
查詢優化器保留所有權利隨機播放。根據統計數據和指標,它可能會做出一些意想不到的事也就是說,我會隨着你的第一個例子走,因爲它對休閒讀者來說似乎更清楚。 – HABO 2012-01-13 14:20:17
用例實際上是用於生成的SQL,因此除了相對罕見的調試外,用戶不會看到它。 – Shlomo 2012-01-13 15:50:35