码迷,mamicode.com
首页 > 数据库 > 详细

用不上索引的SQL语句

时间:2018-06-25 15:01:07      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:索引   就是   like   man   包含   job   HERE   利用   建表   

下面介绍六种建立索引后不起作用的sql语句。

1、使用不等于操作符(<>, !=)

SELECT *

FROM dept

WHERE staff_num <> 1000; ×

 

SELECT *

FROM dept

WHERE staff_num < 1000

OR staff_num > 1000; √

 

2、使用 is null 或 is not null

任何包含null值的列都将不会被包含在索引中。

解决这个问题的办法就是:建表时把需要索引的列

定义为非空(not null)

 

3、索引列使用函数或计算

SELECT *

FROM fin_ipb_feeinfo

WHERE trunc(fee_date) > ‘2007-01-01‘; ×

 

SELECT *

FROM fin_ipb_feeinfo

WHERE fee_date > to_date( ‘2007-01-01‘,‘yyyy-mm-dd‘); √

 

WHERE sal*1.1>950 ×

 

WHERE sal>950/1.1 √

 

4、索引列与比较值数据类型不一致

 

emp_no: NUMBER型

 

WHERE emp_no=123(好) √

WHERE emp_no= ‘123‘(也可)

 

emp_type:CHAR型

WHERE emp_type=123 (此时,查询时,不利用索引列) ×

 

WHERE emp_type=‘123‘ √

 

5、复合索引,必须使用主索引列

 

例:复合索引(deptno,job)

WHERE deptno=20 AND job=’MANAGER’ √

WHERE deptno=20 √

WHERE job=’MANAGER’ AND deptno=20 √

 

WHERE job=’MANAGER’ ×

6、like子句

 

WHERE name LIKE ‘王%’ √

WHERE name LIKE ‘%王%’ ×

WHERE name LIKE ‘%王’ ×

用不上索引的SQL语句

标签:索引   就是   like   man   包含   job   HERE   利用   建表   

原文地址:https://www.cnblogs.com/icebutterfly/p/9223823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!