`
melet
  • 浏览: 69679 次
  • 性别: 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数据库性能至关重要。在实际应用中...

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

    - 当需要对多个列进行组合查询时,可以考虑建立复合非聚集索引。 #### 四、索引的性能比较 - **查询性能**:对于单列查询,聚集索引通常比非聚集索引快,因为它直接指向数据行。而对于多列查询,尤其是涉及到联合...

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

    非聚集索引需要两个过程,先找到目录中的结果,然后再翻到所需的页码。非聚集索引的缺点是查询速度较慢,但可以在多个列上建立索引。 何时使用聚集索引或非聚集索引?下表总结了何时使用聚集索引或非聚集索引: | ...

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

    非聚集索引在查询性能上很有优势,尤其是对于多列联合索引和范围查询,但它们会占用额外的存储空间,并且在插入、删除和更新时可能需要维护索引。 接着是**聚集索引**。聚集索引决定了数据在表中的物理存储顺序。在...

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

    #### 五、何时使用聚焦索引或非聚焦索引 - **聚焦索引**:当表中有一列或多列的数据频繁用于范围查询或排序时,考虑使用聚焦索引。 - **非聚焦索引**:当表中有一列或多列的数据频繁用于作为查找条件时,考虑使用非...

    创建索引和调优索引

    然而,索引并非全无缺点,它们需要额外的存储空间,并且在数据更新时需要维护,可能会影响写操作的性能。 禁用索引是一项重要的管理任务,可以防止用户通过索引访问数据,特别是在升级或维护过程中。SQL Server ...

    数据库 创建索引 sql oracle

    "数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的...但是,索引的创建和管理需要遵循一定的原则和方法,以确保索引的正确性和效率。

    oracle索引,常见索引问题

    Oracle数据库中的索引是优化查询性能的关键工具,它...因此,当遇到常见的索引问题时,如索引未被使用、索引碎片化、索引过多或过少等,都需要深入分析并采取相应的解决方案,如重建索引、优化查询语句或调整索引策略。

    MySql索引详解,索引可以大大提高MySql的检索速度

    如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。...

    数据库索引设计和优化

    4. 聚集索引与非聚集索引:聚集索引中,索引项的值就是数据行的位置,而非聚集索引则有单独的索引页和数据页,需要回表操作。 四、查询优化 1. 使用WHERE子句:避免全表扫描,合理使用索引字段进行筛选。 2. 避免...

    SQLSEVER索引和索引调整向导

    * 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快查询速度。 * 在经常使用于 WHERE 子句中的列上创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,...

    oracle在线创建索引和重组索引

    Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和重组索引的步骤和注意事项。 一、...

    SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中 include 的魅力(具有包含性列的索引) SQL Server 索引中 include 的魅力(具有包含性列的索引)是指在非聚集索引中添加非键列,以扩展索引的功能,...但是,需要注意在设计索引时的准则和限制。

    索引

    在IT行业中,索引是一种...理解不同类型的索引,知道何时何地创建索引,以及如何优化索引,都是IT专业人员必备的技能。在实际工作中,我们需要根据具体场景和需求,灵活运用这些知识来设计高效的数据存储和查询方案。

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

    然而,正因为这种物理排序,聚集索引在插入、删除或更新数据时可能会相对较慢,因为这些操作可能需要重新排列数据页以保持索引的顺序。 相比之下,非聚集索引(Non-Clustered Index)并不影响数据的物理存储顺序。...

    MySQL Innodb 索引原理详解

    这些特点使得B+树非常适合用于索引构建,特别是在需要频繁顺序访问数据的情况下表现优秀。 ##### 1.4 B*树(B*-Tree) B*树是一种特殊的B树,具有以下特性: - 节点所含关键字的数量 j 满足:┌m2/3┐ - 1 ≤ j ...

    oracle、sql数据库批量建索引

    在数据库管理中,索引是...无论是Oracle还是SQL Server,理解如何批量操作索引,以及何时何地创建索引,都是数据库管理员必备的技能。通过合理的设计和管理,索引能够极大地提升查询效率,进而优化整个系统的运行效率。

    数据库用索引为什么比不用索引更快

    其次,每当插入、删除或更新表中的数据时,数据库都需要同步维护索引,这可能导致写操作变慢。因此,在设计数据库时,需要权衡查询速度与写操作性能,合理选择是否为某列创建索引。 此外,数据库优化器在执行查询时...

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

    5. **优化索引**:在系统运行过程中,可能需要监控索引的使用情况,根据实际性能调整索引策略,例如添加、删除或重建索引。 在给定的压缩包文件中,`getidx.pbl`、`getidx.pbt`和`getidx.pbw`可能是某种数据库或...

Global site tag (gtag.js) - Google Analytics