我在MySQL SELECT语句中使用CASE WHEN
+------+
|UDF(x)|
+------+
| 2|
+------+
然而,这会将获取时间从0.5秒增加到2.5秒。
是否有更快或更换CASE WHEN表现得更快?
答案 0 :(得分:2)
在设计查询时,考虑谓词的“sargability”很重要 - 也就是说查询是否可以使用索引。
https://en.wikipedia.org/wiki/Sargable
在关系数据库中,如果DBMS引擎可以利用索引来加速查询的执行,则称查询中的条件(或谓词)是可搜索的。该术语源于搜索ARGument ABLE的收缩。
不幸的是XOR
运算符通常不是sargable - 所以你的数据库不能使用risk
上的索引来加速查询,而是必须检查每条记录并重新计算答案 - 不好!
相反,您应该只返回risk
值并在客户端代码中执行计算。