SQL Case语句VS Union所有性能

dck*_*ney 8 t-sql sql-server

我有一个需要合并条件逻辑的查询.有4种情况需要考虑,结果集是不相交的.

我可以使用单个SELECTCASE/ WHEN语句或使用多个SELECT语句来实现查询UNION ALL.

一般来说,这些实现中的一个可能比另一个快吗?如果是这样,为什么?

dja*_*azz 2

Union 会同时进行许多选择,因此,如果 from 语句不是那么复杂并且所有其他条件都相同,那么一般情况下,恕我直言,情况会更好。但它们不是类似的 sql 结果:

“Case when ...”将添加另一个水平行,并且默认情况下,选择的并集必须在被并集的集合中具有一定数量的列,以便它将添加更多行。例如,如果您查询三个单独的表,然后将它们联合在一起,那么您将执行三个选择,但是如果您只执行三种情况,那么如果您查询一个表,那么会更高效。但您可能会查询五个。在不知道来源的情况下,答案实际上是:“这取决于”。

我只是在做SQL引擎快速计时时设置了ole“设置统计时间打开”来查看。人们可以争论语义,但当引擎告诉你发生了什么时,它不会撒谎。我相信 SQL 2005 及更高版本的菜单栏中也有“包括实际执行计划”。这是一个看起来很漂亮的 L 形状的三个正方形小图标,L 点位于左上角。如果您有一些非常复杂的东西并且正在真正进行微调,那么这是选择的工具来检查引擎在查询中在幕后所做的事情。