`

oracle 建立索引的原则

阅读更多
来源:http://f.dataguru.cn/forum.php?mod=viewthread&tid=51918
1、索引字段建议建立NOT NULL约束(is null or is not null是无法用到索引的);

2、表的主键、外键必须有索引;

3、数据量超过1000的表、查询出总行数2%到4%行的表应该有索引;

4、经常与其他表进行连接的表,在连接字段上应该建立索引;

5、经常出现在Where子句中的字段且过滤性很强的,特别是大表的字段,应该建立索引;

6、可选择性高的关键字 ,应该建立索引;

7、可选择性低的关键字,但数据的值分布差异很大时,选择性数据比较少时仍然可以利用索引提高效率;

8、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

A、正确选择复合索引中的第一个字段,一般是选择性较好的且在where子句中常用的字段上;

B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

9、频繁DML的表,不要建立太多的索引;

10、不要将那些频繁修改的列作为索引列
分享到:
评论

相关推荐

    索引优化原则及Oracle中索引总结

    Oracle索引建立原则  · 确定针对该表的操作是大量的查询操作还是大量的增删改操作。  · 尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。  · where语句中...

    Oracle高效SQL语句原则

    建立索引可以大大提高 SQL 语句的执行效率,因为索引可以帮助 Oracle database 快速定位要查询的数据。因此,在编写 SQL 语句时,应该尽可能对查询条件的列建立索引。 2. 尽量不要在 where 条件中对查询列使用函数 ...

    Oracle 索引 详解

    * 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 * 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低...

    oracle数据库索引与sql的优化

    - 如果WHERE子句中涉及到的列是经常排序或分组的列,则建立索引有助于加速查询过程。 - 对于SELECT、INSERT、DELETE、UPDATE等操作,合理使用索引可以提高其执行效率。 2. **SQL语句优化示例:** - 使用`NOT ...

    Oracle数据库中的索引管理技术.pdf

    (3)两列比一列好:Oracle 允许用户建立复合索引,这种索引针对多个表列。 (4)where 子句和索引:Oracle 根据用户在 where 子句中的定义找出满足查询要求的索引项(如根据一条 SQL 语句中的 where 和 and 部分...

    oracle优化原则

    以下是对标题"oracle优化原则"及描述中提到的知识点的详细说明: 1. **选用适合的ORACLE优化器** Oracle的优化器主要有三种类型:基于规则(RULE)、基于成本(COST)和选择性(CHOOSE)。基于成本的优化器(CBO)...

    ORACLE索引笔记.pdf

    1. **索引选择性**:选择性高的字段更适合建立索引,因为这样的字段能更好地区分数据,使得查询能够更快定位到所需行。分析SQL语句中的约束条件字段,优先考虑那些可选性高且频繁出现的字段。 2. **窄索引与宽索引*...

    Oracle管理索引、权限和角色.doc

    在文档"Oracle管理索引、权限和角色.doc"中,主要涵盖了以下几个关键知识点: 1. **数据完整性**:数据完整性是数据库设计的核心原则之一,它确保存储在数据库中的数据准确无误并遵循预设的规则。在Oracle中,数据...

    数据库面试题4 oracle笔试 oracle例题

    - 不应该在含有NULL值的列上建立索引,因为Oracle优化器不会在where子句中使用包含`IS NULL`或`IS NOT NULL`的索引。这会导致即使列有索引,系统也会进行全表扫描。 2. **联接列**: - 在联接查询中,如果where...

    创建Oracle数据库的原则.pdf

    首先,初始化文件(init.ora)的建立是创建Oracle数据库的第一步。这个文件定义了实例的基本配置和性能参数,如内存结构的大小、日志文件的位置等。用户可以使用文本编辑器如写字板进行编辑。初始化文件中的参数设置应...

    ORACLE索引与高性能SQL介绍

    通过深入理解Oracle索引和高性能SQL的概念、类型、创建与维护方法以及优化原则和技巧,数据库管理员和开发人员可以更有效地设计和管理数据库,提高系统的整体性能。这不仅涉及到理论知识的学习,更需要在实践中不断...

    DBA 应遵循的 Oracle 调优原则

    - 为经常用于排序的字段建立索引。 **2. 调整SORT_AREA_SIZE** - 调整该参数以优化内存中的排序空间,减少磁盘I/O操作。 **3. 使用临时表空间** - 对于大规模排序操作,合理配置临时表空间,确保有足够的空间...

    oracle 其他数据库对象

    - 主键列和频繁出现在WHERE子句中的列应考虑建立索引。 ##### 5.2.2 索引的创建与删除 创建索引的SQL语法如下: ```sql CREATE [{UNIQUE | BITMAP}] INDEX 索引名 ON 表名 (列名1[, 列名2, ...]); ``` - `UNIQUE`...

    Oracle 数据库中创建合理的数据库索引

    对于Oracle数据库而言,表的大小是决定是否建立索引的重要因素。小表,特别是那些记录数不超过一百条的表,由于其数据量小,全表扫描在大多数情况下并不会对数据库性能造成太大负担。对于这类表,创建索引可能会带来...

    Oracle数据库访问类

    5. SQL语句的执行:Oracle数据库访问类通常支持执行DML(增删改)语句和DDL(建表、索引等)语句,以及存储过程调用。通过OracleCommand对象的ExecuteNonQuery()方法执行不返回结果集的SQL,如INSERT、UPDATE和...

    《基于Oracle的SQL优化》PDF版本下载.txt

    例如,在经常用于条件筛选的列上建立索引。 2. **避免全表扫描**:全表扫描会大大增加查询时间。通过使用适当的WHERE子句来限制返回的数据量,可以避免全表扫描的发生。 3. **减少使用SELECT ***:明确指定查询...

    ORACLE学习手册和案例

    - **更新频繁**:经常被修改的列不适合建立索引,因为每次修改都会引起索引的重建。 - **基数低**:只有很少几个不同值的列,建立索引可能不会有明显的性能提升。 - **用于文本搜索**:如果数据列主要用于全文搜索,...

    oracle 相关资料

    B树索引适用于频繁查询的列,位图索引适合于低基数(即不同值较少)的列,函数索引则允许对列的计算结果建立索引。 五、安全性 Oracle提供了一套完善的安全机制,包括用户管理、角色权限、对象权限等。通过设置...

Global site tag (gtag.js) - Google Analytics