`
melet
  • 浏览: 68478 次
  • 性别: Icon_minigender_1
  • 来自: 海南-临高
社区版块
存档分类
最新评论

何时需要索引

    博客分类:
  • DB
阅读更多

1)与全表扫描相比,索引扫描需要执行多少块I/O操作?
回答如果知道此问题的答案,就会立即知道建立和使用一个索引是否有性能意义,
2)用于特定表中的数据访问的最常用的列组合是什么?
回答  研究应用程序代码。如果程序代码不客易看懂,则查看V$SQLAREA或
V$SQLTEXT,并分析最常用的sQL语勾。查找在V$SQLAREA中具有较高执行次数的语
勾,并查找它们的where子句的成分。
3)对打算在其上建立索引的一组给定的列,其选择性是什么?
回答如果一些列始终有值并且相对惟一,则它们应该是索引的前导列。为建立索引,按
照可能具有惟一值的概率,对这些列进行降序排列。
4)在where子句中引用的所有列都需要进行索引吗?
回答  不需要,如果列具有很低的数据基数,并又或者可具有空值的话。需要有意识他从
索引列表中去除这样的列。索引中有这样的列不会给查询带来任何好处。
5)索引所基于的表用于事务处理还是主要用于查询?
回答如果不知道,应该查一下!如果它是事务处理的表,则需要确定由于给出附加索引
对事务处理的潜在的负面影响。在较好的查询性能和事务处理时的负面影响之间怎样权
衡?如果它是主要用于查询的表,别最好建立索引,但是需要了解INDX表空间中的与空
间有关的问题。
6〕如果更新表中的数据,应该在批处理(一个用户和一个大的更新操作)中完成还是事务
性地完成(多个用户和多个小的更新操作)?
回答你应该知道,如果不知道,请花时间查一下。这将有助于确定何时期删除索引或何时
使其无效。
7)需要为批处理保留索引,或者需要删除它或使它无效吗?
回答你应该知道,如果不知,查一下!
8)建立新索引的存储含义是什么(分区数、表空间大小、使用的空间,等等)?
回答为新索引做存储计划,记住较大的存储量、客量规划以及存储预算。
9)对于应用程序来说,索引的停工期含义是什么?
回答 如果在一个分区表上配置了一个全局有前缀的索引,并且如果该表需要频繁的联机
分区管理,则该全局索引在分区维护操作和重建整个全局索引之间的时间段内是不能使
用的。这个时间段就是所谓的停工期。清楚了吗?
10)为了重建索引,需要有多长的停工期,  (在oracle8i中不成问题,因为索引可以联机建
但对于不是使用oracle8i的那些人来说,这个问题很有讲究。)
回答  如果拥有由oracle序列提供的列的索引,通过设计,在该列和该索引中将具有单调
增加的位。所有新的值将存储在B*树的右边,并且需要定期重建这些索引以便重新平衡
B*树。能够多久做一次?每天有多少新记录插入到该表中?在回答此问题时.还会有更
多的问题。
何时需要重建索引
    由于索引存储在B*树中,且索引的最终日标是提供对表中数据的快速访问,显而易见,任
何索引的查找都需要使所发生的节点/块的读取操作最少(减少I/o是索引可用性的关键)。在这
里,最有关的因素是需要访问的叶节点数据块的数量。索引中叶数据块数越少,索引使用的I/o
操作就越少,并且从表中检索数据行的速度就越快。正如已经说道的那样,应该注意,经历了
重复插入和删除操作的表的索引可能面临更高的碎片风险。
    现在的问题是,在—个给定的索引中叶块是如何变成碎块的?是由于要读取并清空大量的
叶块吗?因此,确定索引的叶块密度很重要。叫缺的内容越稠密,索引越好。通过运行一个脚
本来检索索引的列中的数据行值的数量和出现在该索引中的叶块的数量是有益的。
    例如,如果今天有1000行值和10个叫块.则叶块的密度等于1000/10行=100行:如果从今
天起的一周中的行数为1200,但有20个叶块,则叶块密度等于1200/20行=60行。相比之下,行
数增加20%,而叶块密度降低40%。现在应该重建该索引,因为它潜在地包含了许多空块。

SQL语句的where子句条件在使用索引的情况下访问的数据块比执行全表扫描时的多时,
不使用索引,宁可使用全表扫描。这可以通过对索引的列使用一个无害的表达式(如对于
数值列为+0,对于字符列为一个空串||''),或者通过使用FuLL提示;如果正在使用基于成
本的优化程序)暗示SQL语句来达到。

 

 

分享到:
评论

相关推荐

    MySQL何时使用索引,何时不使用索引

    MySQL何时使用索引,何时不使用索引,归纳的还算详细,可以看看。

    分区索引,本地索引,全局索引的区别

    oracle 分区索引,本地索引,全局索引的区别

    索引介绍聚集索引和非聚集索引

    关于索引的介绍,以及b+树结构图,两种索引性能比较,索引优化建议

    漫谈数据库索引漫谈数据库索引漫谈数据库索引

    漫谈数据库索引漫谈数据库索引漫谈数据库索引漫谈数据库索引

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    SQL Server 索引结构及其使用(聚集索引和非聚集索引)的区别与实例讲解,提高查询速度。

    MySQL索引 聚集索引

    MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。

    索引更新索引更新

    索引更新索引更新索引更新索引更新索引更新索引更新索引更新索引更新索引更新

    ORACLE重建索引总结

    5、每次索引访问的读取数:是指利用索引读取一数据行时所需要的逻辑I/O操作数,逻辑读取不必是物理读取,因为索引的许多内容已经保存在数据缓冲区,然而,任何数据大于10的索引都需要重建。 6、什么时候重建呢? ...

    数据库 创建索引 sql oracle

    1.索引的创建与使用 2.创建索引的原则 3.索引的分类 4.创建索引的多种方法 5.管理索引 6.索引优化 7.查看、修改索引属性 8.修改索引名 9.删除索引

    MySQL数据库:创建索引.pptx

    创建索引 数据索引 课程目标 理解 —— 创建索引的语法; 掌握 —— 在已有表上创建索引的方法; 掌握 —— 在修改表时添加索引的方法; 掌握 —— 在创建表时创建索引的方法。 创建索引 使用CREATE INDEX语句创建...

    hbase创建二级索引

    public class IndexBuilder3 extends Configured{ public static class MapperIndex extends TableMapper,...//获取所有需要建索引的列 Set[]> keys = indexs.keySet(); for (byte[] k:keys){ // 该列对应的索引表名字

    XML数据索引技术

    对XML数据建立有效的索引,是左右XML数据处理性能的重要因素.深入地讨论了目前XML索引 技术的研究现状,将XML索引技术分为两大类:节点记录类索引(本身还可以分为3个小的类型)和结构摘要类 索引.根据XML数据查询...

    数据库非聚集索引 聚集索引 模式 索引

    详细介绍数据库中非聚集索引,聚集索引,索引,模式的各个内容与区别。

    数据库 索引及优化

    数据库 索引 优化 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引...

    MySQL Innodb 索引原理详解

    MySQL Innodb 索引原理详解

    文件索引的创建 文件索引的创建 文件索引的创建

    文件索引的创建 文件索引的创建 文件索引的创建 文件索引的创建 文件索引的创建 文件索引的创建

    mysql多条件索引

    数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织...通常是需要回表再查数据,需要消耗额外的磁盘IO。所以有些时候(如按顺序读取数据)全表扫描会比使用索引快的原因就在于此。

    聚集索引与非聚集索引的区别

    一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。  聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一...

    oracle索引,常见索引问题

    oracle索引,常见索引问题,详见PPT内容

    简单例子理解主键,索引,聚集索引,复合索引,非聚合索引

    一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex...

Global site tag (gtag.js) - Google Analytics