• 用不上索引的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 ‘%王’ ×

  • 相关阅读:
    python归并排序
    初学者迭代python
    大数相乘
    基本蚁群算法
    MATLAB绘图,绘双坐标轴,绘一图二轴等
    为什么说TCP协议是可靠的
    TCP协议-报文段数据中的自定义包头
    net start npf启用失败
    富时A50中国指数学习笔记
    ProtoBuffer学习总结
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/9223823.html
Copyright © 2020-2023  润新知