zoukankan      html  css  js  c++  java
  • SQL 语句优化—— (二) 索引的利用

      索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。但是用索引也有一些限制,并不是任何情况下数据库都会用到索引,那在我们书写查询语句的时候,就必须注意如何尽可能的使用索引。

    一.创建索引的语法:

    创建索引的标准语法:

    create index 索引名 ON 表名 (列名);

    创建唯一索引:

    create unique index 索引名 ON 表名 (列名);

    创建组合索引:

    create index 索引名 ON 表名 (列名1,列名2);

    二.创建索引的注意事项:

    1、采用函数处理的字段不能利用索引,如:

    substr(hbs_bh,1,4)=’5400’,优化处理:hbs_bh like ‘5400%’

    trunc(sk_rq)=trunc(sysdate), 优化处理:sk_rq>=trunc(sysdate) and sk_rq<trunc(sysdate+1)

    2、进行了显式或隐式的运算的字段不能进行索引,如:

    ss_df+20>50,优化处理:ss_df>30

    ‘X’ || hbs_bh>’X5400021452’,优化处理:hbs_bh>’5400021542’

    sk_rq+5=sysdate,优化处理:sk_rq=sysdate-5

    hbs_bh=5401002554,优化处理:hbs_bh=‘5401002554’,注:此条件对hbs_bh 进行隐式的to_number转换,因为hbs_bh字段是字符型。

    3、条件内包括了多个本表的字段运算时不能进行索引,如:ys_df>cx_df,无法进行优化

    qc_bh || kh_bh=’5400250000’,优化处理:qc_bh=‘5400‘ and kh_bh=’250000’

  • 相关阅读:
    057.Python前端Django模型ORM多表查询
    056.Python前端Django模型ORM多表基本操作
    055.Python前端Django模型ORM
    054.Python之Ubuntu安装Pycharm
    053.Python前端Django框架模板层
    052.Python前端Django框架路由层和视图层
    基数排序
    链表k个节点反向
    链表排序
    函数返回局部指针变量是否可行?
  • 原文地址:https://www.cnblogs.com/hqbhonker/p/3685585.html
Copyright © 2011-2022 走看看