回答

收藏

Oracle中的INSTR和LIKE有什么区别?

技术问答 技术问答 264 人阅读 | 0 人回复 | 2023-09-14

有人能告诉我OracleINSTR和LIKEOracle两者有区别吗?
! @& e; I% B4 j9 J- y- D- N/ p% Q, C* OOracle10g哪一个更快?: O2 n( ]* q5 j* b' Q
                                                                " b( {% D- T( E, x3 e0 S* Z
    解决方案:                                                                ) h4 L# a. K1 I* d% {* o
                                                                这取决于数据和模式。如果使用它。like'a%',则Oracle可以使用BTree因为索引来找匹配项,Oracle可以使用模式的开始搜索btree,然后只考虑子树。6 ~5 J( d% E" g$ b& C+ e
这不适用于LIKE '%a但是你可以通过创建一个计算列来解决这个问题,它会逆转你想要搜索的列中的所有值(所以你会得到上述模式)。; I* [* |) Y6 r$ t
如果使用散列索引,Oracle几乎无能为力,只能扫描整个索引。当只有几个不同的值时,它可能会更快。  Q' p; k! N& w* ^+ F
我不确定是否INSTR由于没有固定锚,可以使用索引。+ J& o" L% p% y
就像所有的性能问题一样:; N4 D; v- P, f1 c# Y# y
[ol]填数据库中填充一些实际的测试数据,并运行一些测试。! w! \6 A- C: R& O( b& C
当您 了解    瓶颈时,请始终以未来轻松优化的方式编写代码+ U/ t' E* I% N' L8 M1 w% D
永远不要猜测可能会变慢。你有90%时间错了。总是测量。[/ol]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则