gpt4 book ai didi

sql - 使用 LIKE 'string' vs = 'string' 对 Oracle 的性能有何影响?

转载 作者:行者123 更新时间:2023-12-03 21:17:33 24 4
gpt4 key购买 nike


SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE '%some_value%';

比这慢
SELECT * FROM SOME_TABLE WHERE SOME_FIELD = 'some_value';

但是这个呢?
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE 'some_value';

我的测试表明第二个和第三个示例完全相同。如果这是真的,我的问题是,为什么要使用 "="?

最佳答案

当您使用绑定(bind)变量时有一个明显的区别,您应该在 Oracle 中将其用于数据仓库或其他批量数据操作以外的任何事情。

举个例子:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle 在执行之前无法知道 :b1 的值是 '%some_value%' 或 'some_value' 等,因此它将根据启发式方法估计结果的基数并提出一个适当的计划可能适合也可能不适合 :b 的各种值,例如 '%A'、'%'、'A' 等。

类似的问题也适用于等式谓词,但可能导致的基数范围更容易根据列统计信息或唯一约束的存在来估计。

所以,就我个人而言,我不会开始使用 LIKE 作为 = 的替代品。优化器有时很容易被愚弄。

关于sql - 使用 LIKE 'string' vs = 'string' 对 Oracle 的性能有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/134456/

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