【发布时间】:2011-12-27 16:02:26
【问题描述】:
有人能告诉我Oracle 中INSTR 和LIKE 之间的区别吗?
Oracle10g 中哪个更快?
【问题讨论】:
有人能告诉我Oracle 中INSTR 和LIKE 之间的区别吗?
Oracle10g 中哪个更快?
【问题讨论】:
这取决于数据和模式。如果您使用like 'a%',那么Oracle 可以使用BTree 索引来查找匹配项,因为它可以搜索以模式开头的btree,然后只考虑子树。
这不适用于LIKE '%a',但您可以通过创建一个计算列来解决此问题,该列反转您要搜索的列中的所有值(这样您就可以得到上面的模式)。
如果您使用散列索引,Oracle 只能扫描整个索引。当只有几个不同的值时,它可能会更快。
我不确定INSTR 是否可以使用索引,因为它没有固定的锚点。
就像所有性能问题一样:
【讨论】:
【讨论】:
instr(title,' manual')>0 和title like'%manual%' 之间进行比较。第一个表达式搜索以“manual”开头的标题,而后者搜索任何地方包含“manual”的标题。
instr(title,'manual')>0 将像like 一样在任何地方搜索具有“手册”的标题。 INSTR documentation