Oracle 尽量避免在 SQL语句中使用 LIKE

-- Start

前面,我们介绍了尽量避免在SQL语句的WHERE子句中使用函数,因为这样做会使该字段上的索引失效,影响SQL 语句的性能。基于同样的道理,我们也应该避免使用LIKE。考虑下面的情况:

CREATE TABLE PEOPLE
(
NAME VARCHAR(20) NOT NULL,---姓名
MYNUMBER VARCHAR(18)---身份证号码
);

现在要求你把身份证号码开头是2102(大连人)查出来,怎么办?我们很自然的会这么写:

SELECT * FROM PEOPLE WHERE MYNUMBER LIKE '2102%';

上述语句完全正确,只可惜性能不好,那么到底如何处理呢?答案是将它转化为范围扫描,如下:

SELECT * FROM PEOPLE WHERE MYNUMBER>='210200000000000000' AND MYNUMBER<'210300000000000000';

-- 更多参见:Oracle SQL 精萃

-- 声明:转载请注明出处

-- Last edited on 2015-06-19

-- Created by ShangBo on 2015-06-19

-- End


你可能感兴趣的:(oracle,sql,plsql)