MySQL SELECT CASE WHEN获取速度

时间:2017-04-19 00:31:45

标签: mysql case

我在MySQL SELECT语句中使用CASE WHEN

+------+
|UDF(x)|
+------+
|     2|
+------+

然而,这会将获取时间从0.5秒增加到2.5秒。

是否有更快或更换CASE WHEN表现得更快?

1 个答案:

答案 0 :(得分:2)

在设计查询时,考虑谓词的“sargability”很重要 - 也就是说查询是否可以使用索引。

https://en.wikipedia.org/wiki/Sargable

  

在关系数据库中,如果DBMS引擎可以利用索引来加速查询的执行,则称查询中的条件(或谓词)是可搜索的。该术语源于搜索ARGument ABLE的收缩。

不幸的是XOR运算符通常不是sargable - 所以你的数据库不能使用risk上的索引来加速查询,而是必须检查每条记录并重新计算答案 - 不好!

相反,您应该只返回risk值并在客户端代码中执行计算。