ITPub博客

首页 > 数据库 > Oracle > NOT

NOT

原创 Oracle 作者:luisedalian 时间:2014-01-13 13:53:27 0 删除 编辑

在查询时经常在WHERE子句中使用一些逻辑表达式,例如>, <, =, !=等等,也可以在这些比较操作符上应用逻辑运行符(AND,OR,NOT)。

但要注意使用NOT会致使查询不走索引。

点击(此处)折叠或打开

  1. --使用NOT致使查询不走索引
  2. select first_name, last_name, salary from employees1 where not (first_name = \'Amit\');

在<>操作符中,实际上也包含NOT运算,所以要避免<>操作符。

点击(此处)折叠或打开

  1. --在salary列上创建索引
  2. create index idx_employees1_salary on employees1(salary);
  3. --使用<>操作符,也会包含NOT运算
  4. select salary, first_name, last_name, hire_date from employees1 where salary <> 3000;


点击(此处)折叠或打开

  1. --解决办法:使用逻辑上相同的比较操作符,进行去NOT(但在11g中仍然走全表扫描)
  2. select salary, first_name, last_name, hire_date from employees1 where salary < 3000 or salary > 3000;



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1069990/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORDER BY子句
下一篇: IN和EXISTS
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040836