这取决于数据和模式。如果使用like 'a%'
,则Oracle可以使用BTree索引来查找匹配项,因为Oracle可以使用模式的开头搜索btree,然后仅考虑子树。
这不适用于LIKE '%a'
您,但您可以通过创建一个计算列来解决此问题,该列将反转您要搜索的列中的所有值(因此您会得到上面的模式)。
如果您使用散列索引,那么Oracle几乎无能为力,只能扫描整个索引。当只有几个不同的值时,它可能会更快。
我不确定是否INSTR
可以使用索引,因为它没有固定的锚。
就像所有性能问题一样:
Oracle中的INSTR和LIKE有什么区别?
这取决于数据和模式。如果使用like 'a%'
,则Oracle可以使用BTree索引来查找匹配项,因为Oracle可以使用模式的开头搜索btree,然后仅考虑子树。
这不适用于LIKE '%a'
您,但您可以通过创建一个计算列来解决此问题,该列将反转您要搜索的列中的所有值(因此您会得到上面的模式)。
如果您使用散列索引,那么Oracle几乎无能为力,只能扫描整个索引。当只有几个不同的值时,它可能会更快。
我不确定是否INSTR
可以使用索引,因为它没有固定的锚。
就像所有性能问题一样: