zoukankan      html  css  js  c++  java
  • 用不上索引的SQL语句

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

  • 相关阅读:
    Iptables 之二扩展模块 nat
    sudo 命令
    7、CentOS6 编译安装
    MySQL5.7 基础之二 DCL DML
    SQL Server 2008R2安装
    6、httpd2.4 编译安装LAMP
    MySQL 基础之一
    gulp
    msbuild
    inno setup
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/9223823.html
Copyright © 2011-2022 走看看