我重構一個的同事老SQL代碼,並在一些地方發現一個地方的形式where [SomeCol] in ('XYZ')
的條款。我假定這只是在括號(where [SomeCol] in ('ABC', 'DEF', 'XYZ')
)與多個值代碼等地快速複製粘貼的結果,並與[SomeCol] = 'XYZ'
,只爲整潔起見替換他們,即使。('single element')和[col] ='single element'中的[col]有什麼區別?
只是想絕對確定這兩個語句在功能上是否相同 - 我認爲[SomeCol] = 'XYZ'
有點(可能不太可能)更有效率,但不想在以後找出我正在絆倒一些模糊功能會產生不同的結果。
看看執行計劃。對於我的例子來說,它是一回事。 – makciook
它們在各方面都是相同的。結果沒有差異,也沒有差異。如果你檢查執行計劃,你會發現你的''SomeCol''被執行爲'[SomeCol] ='XYZ'',所以你不會因爲改變它而有所作爲。 –
@凱。 。 。唯一的區別是可維護性。如果你可能會添加和刪除值,那麼'in'形式更安全。您不必擔心有人將'x ='a'和y ='c''更改爲'x ='a'或x ='b'和y ='c''。 –