• 数据库什么时候建立索引?


    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来的,所以在设计表的时候,除完整性要求的必要索引之外,
    不要创建索引

  • 相关阅读:
    Linux常用指令全集
    js判断ie11浏览器
    javascript事件触发器fireEvent和dispatchEvent
    HTML5自定义属性对象Dataset简介
    CommonJS规范
    sql基本语法大全
    (七)make menuconfig
    (六)buildroot使用详解
    (二十一)Makefile例子
    (二十)ubuntu的recovery mode解决用户一些实际问题
  • 原文地址:https://www.cnblogs.com/SUN-PH/p/4922852.html
Copyright © 2020-2023  润新知