我有一张我正在复制的地址表.有14种不同类型的地址可供使用.为了减少复制的数据,我在AddressType字段上进行过滤.该字段是一个int,其值为1到14.我原来有一个过滤器
AddressType = 2
Run Code Online (Sandbox Code Playgroud)
因为我只对那种类型的地址感兴趣.但是,最近的更改要求我同时复制AddressType 1和2.我首先将过滤器更改为
AddressType in (1,2)
Run Code Online (Sandbox Code Playgroud)
我会用过滤器更好吗?
AddressType < 3
Run Code Online (Sandbox Code Playgroud)
思考?
随着数量变大,可能会有显着差异.您不会在较小的数字上看到性能差异,但随着它变大,您会看到差异,特别是如果AddressType上有索引.您的IN ()版本基本上被翻译为:
WHERE AddressType = 1
OR AddressType = 2
OR ...
Run Code Online (Sandbox Code Playgroud)
对于这个具体案例,我同意其他人的意见.(1)当只有14个值时的性能差异不太可能引人注意.(2)乔纳森的观点是,IN ()更准确地反映出你想做的事情也是一个好的.
但是,对于未来的读者谁可能有更多的可能值,我觉得要注意的事情是如何是很重要的可以改变时,列表中没有这样的限制(或当<和IN ()不再提供相同的功能,例如,当地址类型的变化).即使在IN ()列表中的所有内容都符合范围标准的便利性的情况下,更大的尺寸仍然需要考虑其他事项:(1)键入不太方便IN (1,2,3,4,5,6,7,8,9,10, ...),这也可能导致批量大得多的时候我们'谈论极端.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |