在查询时经常在WHERE子句中使用一些逻辑表达式,例如>, <, =, !=等等,也可以在这些比较操作符上应用逻辑运行符(AND,OR,NOT)。
但要注意使用NOT会致使查询不走索引。
-
--使用NOT致使查询不走索引
-
select first_name, last_name, salary from employees1 where not (first_name = \'Amit\');
在<>操作符中,实际上也包含NOT运算,所以要避免<>操作符。
-
--在salary列上创建索引
-
create index idx_employees1_salary on employees1(salary);
-
--使用<>操作符,也会包含NOT运算
-
select salary, first_name, last_name, hire_date from employees1 where salary <> 3000;
-
--解决办法:使用逻辑上相同的比较操作符,进行去NOT(但在11g中仍然走全表扫描)
-
select salary, first_name, last_name, hire_date from employees1 where salary < 3000 or salary > 3000;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1069990/
,如需转载,请注明出处,否则将追究法律责任。