例子:
Where子句中有“!=”将不使用索引
select account_name from test where amount != 0 (不使用)
select account_name from test where amount > 0 (使用)
Where条件中对字段增加处理函数将不使用该列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)
避免在索引列上使用IS NULL和 IS NOT NULL
select * from emp where dept_code is not null (使用)
select * from emp where dept_code is null (不使用)
select * from emp where dept_code > 0 (使用)
通配符% 的使用
select * from emp where name like '%A' (不使用索引) (反向索引时会使用索引)
select * from emp where name like 'A%' (使用索引)
删除掉表中重复记录的最有效的语句:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO);