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

时间:2011-12-27 16:02:26

标签: sql oracle oracle10g

有人可以告诉我Oracle中INSTRLIKE之间的区别吗?

Oracle10g中哪一个更快?

4 个答案:

答案 0 :(得分:8)

这取决于数据和模式。如果使用like 'a%',那么Oracle可以使用BTree索引查找匹配项,因为它可以使用模式的开头搜索btree,然后只考虑子树。

这对LIKE '%a'不起作用,但您可以通过创建一个计算列来解决此问题,该列会反转您要搜索的列中的所有值(因此您可以获得上面的模式)。

如果使用散列索引,那么Oracle几乎无法扫描整个索引。当只有很少的不同值时,它可能会更快。

我不确定INSTR是否可以使用索引,因为它没有固定的锚。

与所有表现问题一样:

  1. 使用一些实际测试数据填充数据库并运行一些测试。
  2. 当您知道关于瓶颈
  3. 时,请始终以一种可以在以后轻松优化的方式编写代码
  4. 永远不要猜测可能会很慢。你90%的时间都会错。始终衡量。

答案 1 :(得分:3)

  • INSTR在另一个字符串中搜索字符串,包含方向,起始位置等选项
  • LIKE是简单模式匹配和标准SQL

两者都不会“更快”,因为它们不具有可比性:它取决于您需要做什么,您的数据,您如何搜索等

答案 2 :(得分:2)

INSTR是一个oracle函数,因为Oracle 8i用于查找子字符串,LIKE是一个主要用于匹配字符串和通配符的SQL条件。

我希望INSTR更快一些,因为它不那么复杂,但我没有测量它。

答案 3 :(得分:1)

相关问题