来源: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索引建立原则 · 确定针对该表的操作是大量的查询操作还是大量的增删改操作。 · 尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 · where语句中...
建立索引可以大大提高 SQL 语句的执行效率,因为索引可以帮助 Oracle database 快速定位要查询的数据。因此,在编写 SQL 语句时,应该尽可能对查询条件的列建立索引。 2. 尽量不要在 where 条件中对查询列使用函数 ...
* 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 * 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低...
- 如果WHERE子句中涉及到的列是经常排序或分组的列,则建立索引有助于加速查询过程。 - 对于SELECT、INSERT、DELETE、UPDATE等操作,合理使用索引可以提高其执行效率。 2. **SQL语句优化示例:** - 使用`NOT ...
(3)两列比一列好:Oracle 允许用户建立复合索引,这种索引针对多个表列。 (4)where 子句和索引:Oracle 根据用户在 where 子句中的定义找出满足查询要求的索引项(如根据一条 SQL 语句中的 where 和 and 部分...
以下是对标题"oracle优化原则"及描述中提到的知识点的详细说明: 1. **选用适合的ORACLE优化器** Oracle的优化器主要有三种类型:基于规则(RULE)、基于成本(COST)和选择性(CHOOSE)。基于成本的优化器(CBO)...
1. **索引选择性**:选择性高的字段更适合建立索引,因为这样的字段能更好地区分数据,使得查询能够更快定位到所需行。分析SQL语句中的约束条件字段,优先考虑那些可选性高且频繁出现的字段。 2. **窄索引与宽索引*...
在文档"Oracle管理索引、权限和角色.doc"中,主要涵盖了以下几个关键知识点: 1. **数据完整性**:数据完整性是数据库设计的核心原则之一,它确保存储在数据库中的数据准确无误并遵循预设的规则。在Oracle中,数据...
- 不应该在含有NULL值的列上建立索引,因为Oracle优化器不会在where子句中使用包含`IS NULL`或`IS NOT NULL`的索引。这会导致即使列有索引,系统也会进行全表扫描。 2. **联接列**: - 在联接查询中,如果where...
首先,初始化文件(init.ora)的建立是创建Oracle数据库的第一步。这个文件定义了实例的基本配置和性能参数,如内存结构的大小、日志文件的位置等。用户可以使用文本编辑器如写字板进行编辑。初始化文件中的参数设置应...
通过深入理解Oracle索引和高性能SQL的概念、类型、创建与维护方法以及优化原则和技巧,数据库管理员和开发人员可以更有效地设计和管理数据库,提高系统的整体性能。这不仅涉及到理论知识的学习,更需要在实践中不断...
- 为经常用于排序的字段建立索引。 **2. 调整SORT_AREA_SIZE** - 调整该参数以优化内存中的排序空间,减少磁盘I/O操作。 **3. 使用临时表空间** - 对于大规模排序操作,合理配置临时表空间,确保有足够的空间...
- 主键列和频繁出现在WHERE子句中的列应考虑建立索引。 ##### 5.2.2 索引的创建与删除 创建索引的SQL语法如下: ```sql CREATE [{UNIQUE | BITMAP}] INDEX 索引名 ON 表名 (列名1[, 列名2, ...]); ``` - `UNIQUE`...
对于Oracle数据库而言,表的大小是决定是否建立索引的重要因素。小表,特别是那些记录数不超过一百条的表,由于其数据量小,全表扫描在大多数情况下并不会对数据库性能造成太大负担。对于这类表,创建索引可能会带来...
5. SQL语句的执行:Oracle数据库访问类通常支持执行DML(增删改)语句和DDL(建表、索引等)语句,以及存储过程调用。通过OracleCommand对象的ExecuteNonQuery()方法执行不返回结果集的SQL,如INSERT、UPDATE和...
例如,在经常用于条件筛选的列上建立索引。 2. **避免全表扫描**:全表扫描会大大增加查询时间。通过使用适当的WHERE子句来限制返回的数据量,可以避免全表扫描的发生。 3. **减少使用SELECT ***:明确指定查询...
- **更新频繁**:经常被修改的列不适合建立索引,因为每次修改都会引起索引的重建。 - **基数低**:只有很少几个不同值的列,建立索引可能不会有明显的性能提升。 - **用于文本搜索**:如果数据列主要用于全文搜索,...
B树索引适用于频繁查询的列,位图索引适合于低基数(即不同值较少)的列,函数索引则允许对列的计算结果建立索引。 五、安全性 Oracle提供了一套完善的安全机制,包括用户管理、角色权限、对象权限等。通过设置...