下面介绍六种建立索引后不起作用的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 ‘%王’ ×

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
猜你喜欢
  • 2022-12-23
  • 2021-09-17
  • 2022-12-23
  • 2021-07-05
  • 2021-12-22
  • 2022-02-17
相关资源
相似解决方案