我应该以最常见的情况启动条件的CASE顺序吗?假设我的数据库中有3个产品。产品编号1.占所有案例的70%,产品编号。 2代表29%的案例和产品编号。 1%的病例。
这是关于表现的最佳条件顺序吗?
SELECT
CASE
WHEN Product=1 THEN 'Most popular case'
WHEN Product=2 THEN 'Not very popular'
WHEN Product=3 THEN 'Very rare case'
END AS Frequency
只是要好好理解。这是更糟糕的顺序吗?
SELECT
CASE
WHEN Product=3 THEN 'Very rare case'
WHEN Product=2 THEN 'Not very popular'
WHEN Product=1 THEN 'Most popular case'
END AS Frequency
我知道CASE语句的顺序对于查询执行很重要,一旦找到第一个TRUE条件,它就会退出。但我的问题是关于CASE的频率。
答案 0 :(得分:-1)
在这个例子中,CASE语句顺序的实际影响很小。查询优化器将自行决定最佳执行计划是什么,并采取相应的行动。
如果你真的想知道CASE语句本身就像你说的那样,如果CASE在找到它的第一个为真之后退出,那么首先评估一个更常见的事件将更有可能在理论上产生更短的执行时间。
是的,如果CASE具有较高的首次发生几率,也会增加您缩短运行时间的可能性。但是它并不能保证它,这个模糊的情况可能仍然存在并且最后被评估,导致更长的执行时间。根据您的数据,这可能会有所不同,以确保执行这两个版本并平均时间,以便更好地了解哪一个。
编辑:(如果你想控制执行流程):正如你可以在CASE文档中读到的那样:CASE表达式不能用于控制Transact-SQL语句,语句块,用户定义的执行流程功能和存储过程。