zoukankan      html  css  js  c++  java
  • 数据库什么时候建立索引?

    1)主键字段,唯一约束字段,子表的外键约束字段上
    这3种都是需要有索引的

    说明:
    外键没有索引的时候,当主表删除一条数据时,会到子表中查找数据是否存在,因为是级联的,
    如果没有索引就需要全表扫描查找数据,这是就会锁住主表,时间等待。

    2)where条件中常用的筛选字段并且结果集比例比较小(参考值5%以内)

    3) 基于索引扫描的方面去考虑

    4)分页查询时需要合适的索引
    分页涉及到排序,通过索引达到快速定位需要的数据的技巧
    select * from
    (
    select * from
    (
    select a.*,rownum rn
    from
    (
    select owner,object_name,created from mybigt order by object_id
    ) a
    ) where rownum<=1020
    ) where rn>=1000;

    Create Index idx_oid On mybigt(object_id, 0);
    没有筛选条件但是有order by也可以走索引,走index full scan

    Select x.Owner, x.Object_Name, x.Created
    From Mybigt x
    Where x.rowid In (Select Rid
    From (Select Rn, rid
    From (Select Rowid rid, Rownum Rn
    From (Select Rowid Rid From Mybigt Order By Object_Id) a)
    Where Rownum <= 1020)
    Where Rn >= 1000)

    5)索引的添加原则是根据SQL来的,所以在设计表的时候,除完整性要求的必要索引之外,
    不要创建索引

  • 相关阅读:
    安装高版本的docker
    Apache JMeter汉化手册
    安装python包
    Jmeter Cluster
    doc下设置永久环境变量的好方法
    jmeter非常好的博客收藏
    mysql-学习链接
    python 脚本
    常见python快捷键
    2015年心情随笔--周围太烦躁,我想静静
  • 原文地址:https://www.cnblogs.com/SUN-PH/p/4922852.html
Copyright © 2011-2022 走看看