gpt4 book ai didi

MySQL SELECT CASE WHEN 获取速度

转载 作者:行者123 更新时间:2023-11-29 07:01:02 25 4
gpt4 key购买 nike

我在 MySQL SELECT 语句中使用 CASE WHEN

case 
when R1 = risk and R2 = risk then 2
when R1 = risk xor R2 = risk then 1
else 0
end
as score

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

是否有对 CASE WHEN 执行速度更快的修改或替代方案?

最佳答案

设计查询时,考虑谓词的“可控制性”非常重要 - 也就是说查询是否可以使用索引。

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

In relational databases, a condition (or predicate) in a query is said to be sargable if the DBMS engine can take advantage of an index to speed up the execution of the query. The term is derived from a contraction of Search ARGument ABLE.

不幸的是,XOR 运算符通常不可控制 - 因此您的数据库无法使用 risk 上的索引来加速查询,而是必须检查每条记录并重新计算答案 - 不好!

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

关于MySQL SELECT CASE WHEN 获取速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com