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

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

posted on 2015-10-30 11:40  Roc.Sun  阅读(1225)  评论(0编辑  收藏  举报

导航