What is the difference between INSTR and LIKE in Oracle?

非 Y 不嫁゛ 提交于 2019-12-21 05:00:26

问题


Can some one tell me the difference between INSTR and LIKE in Oracle?

Which one is faster in Oracle10g?


回答1:


That depends on the data and on the pattern. If you use like 'a%', then Oracle can use a BTree indexes to look up the matches because it can search the btree with the start of the pattern and then consider only the subtree.

This doesn't work for LIKE '%a' but you can work around this by creating a calculated column which reverses all values from the column you want to search (so you get the pattern above).

If you use hashed indexes, there is little that Oracle can do but scan the whole index. It might sill be faster when there are only few different values.

I'm not sure whether INSTR can ever use an index because it has no fixed anchor.

So like with all performance questions:

  1. Fill the database with some realistic test data and run some tests.
  2. Always write your code in a way that it can be optimized easily later, when you know about the bottlenecks
  3. Never guess what might be slow. You'll be wrong 90% of the time. Always measure.



回答2:


  • INSTR searches for a string inside another string, with options for direction, starting positions etc
  • LIKE is simple pattern matching and standard SQL

Neither will be "faster" consistently because they aren't comparable: it depends what you need to do, your data, how you search etc




回答3:


INSTR is a oracle function since Oracle 8i for finding a substring, and LIKE is an SQL condition mainly used for matching string with wildcards.

I expect INSTR to be a bit faster since it's less complex but I didn't measure it.




回答4:


This page says that INSTR is faster:

http://oracle.veryoo.com/2013/03/performance-comparation-between-like.html

EDIT: Archive link since the above is no longer available: http://web.archive.org/web/20160301212009/http://oracle.veryoo.com/2013/03/performance-comparation-between-like.html

Also on SO for MySql this answer says that INSTR is faster.



来源:https://stackoverflow.com/questions/8646623/what-is-the-difference-between-instr-and-like-in-oracle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!