`

建立索引常用的规则[转]

 
阅读更多

建立索引常用的规则如下: 
1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

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

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

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

  A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

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

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

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

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

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

  以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

(转自http://topic.csdn.net/u/20100112/22/fcf75541-09bd-4373-8d81-2ca833e0195f.html )

分享到:
评论

相关推荐

    常用MFC和API函数

    常用MFC和API函数 索引 CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中的画刷 CButton类:提供Windows按钮控件的功能 CByteArray类:该类...

    SQL性能优化

    建立索引常用的原则如下: 1. 表的主键、外键必须有索引 2. 数据量超过 1000 行的表应该有索引 3. 经常与其它表进行连接的表,在边接字段上应建立索引 4. 经常出现在 where 子句中的字段且过滤性极强的,特别是大表...

    数据库系统概述.doc

    熟练掌握:定义基本表、建立索引。 基本掌握:用SQL语句表达嵌套查询。 初步掌握:定义视图、查询视图。 第5章 查询优化和并发控制 【考试目的】 考核考生对查询优化的策略、方法和步骤理解和掌握的情况以及对并发...

    《于博士之Cadence SPB 15.7 快速入门视频教程》共60集 网盘地址.txt

    第17讲 Allegro常用软件模块介绍,各个软件模块之间的关系 第18讲 Allegro PCB Editor 软件操作界面介绍 第19讲 allegro中两个重要的概念:class和subclass是什么。 第20讲 1. Allegro零件库封装制作的流程步骤。 2....

    数据库设计重、难点.doc

    在常用的连接属性和选择属性上建立 索引,可显著提高查询效率。 7.5.1 影响物理设计的因素 7.5.2 选择存取方法 7.5.3 设计存储结构 1) 减少访盘冲突,提高I/O的并行性 2) 分散热点数据,均衡I/O负荷 3) 保证关键...

    数据库设计方案.doc

    概念模型设计的一种常用方法为IDEF1X方法,它就是把实体- 联系方法应用到语义数据模型中的一种语义模型化技术,用于建立系统信息模型。 使用IDEF1X方法创建E-R模型的步骤如下所示: 2.1 第零步——初始化工程 这个...

    入门学习Linux常用必会60个命令实例详解doc/txt

    文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供...

    ARM开发工具ADS原理与应用 读书笔记

    5.4.4 为工程项目中的常用关键字设置颜色 5.5 浏览器 5.5.1 浏览器概述 5.5.2 浏览操作命令 5.6 浏览器视窗 5.6.1 分类视窗 5.6.2 目录视窗 5.6.3 分层视窗 5.7 浏览器应用 5.7.1 与浏览器有关的级联菜单 5.7.2 使用...

    sqlserver2000基础(高手也有用)

    10.1.2 使用系统存储过程定义作业的常用模板 300 10.2 作业的应用 303 10.2.1 定时启用(或者停用)数据库 303 10.2.2 执行耗时的存储过程 304 10.2.3 秒级作业 305 10.3 使用作业的疑难解答 309 第 11 ...

    SQL SERVER 2000开发与管理应用实例

    10.1.2 使用系统存储过程定义作业的常用模板 300 10.2 作业的应用 303 10.2.1 定时启用(或者停用)数据库 303 10.2.2 执行耗时的存储过程 304 10.2.3 秒级作业 305 10.3 使用作业的疑难解答 309 ...

    UNIX操作系统教程 张红光

    第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要特性3 1.3UNIX系统的发展史4 1.4开源软件与UNIX的推广发展6 1.4.1开源...

    数据库资料

    SQL编程,实现功能强大的查询掌握创建索引、视图,快速访问数据库 掌握创建存储过程,实现复杂的业务规则理解触发器的原理,实现高级的约束目标了解设计数据库的步骤掌握如何绘制数据库的E-R图理解数据库的规范化-...

    linux网络编程-宋敬彬-part1

    2.1.2 使用vim建立文件 15 2.1.3 使用vim编辑文本 16 2.1.4 vim的格式设置 18 2.1.5 vim配置文件.vimrc 19 2.1.6 使用其他编辑器 19 2.2 Linux下的GCC编译器工具集 19 2.2.1 GCC简介 19 2.2.2 编译...

    数据库设计方法.doc

    式然后根据用户处理要求安全性考虑在基本表基础上 再建立必要视图(VIEW)形成数据外模式在物理设计阶段根据DBMS特点和 处理需要进行物理存储安排设计索引形成数据库内模式 1. 需求分析阶段 需求收集和分析结果得到...

    Java开发技术大全 电子版

    13.7.3正则表达式中的一些高级规则421 13.7.4正则表达式中的其他通用规则424 13.7.5使用技巧425 13.8Pattern类的使用426 13.9Matcher类的使用428 13.9.1匹配方法的使用429 13.9.2替换方法的使用430 13.9.3组...

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

    redhat linux教材20课程学习文档

    第一部分 Linux简介和原理介绍 第一章 概述 1.1 Linux 的历史及背景 1.1.1 什么是 Linux? 1.1.2 Linux 该怎么念? 1.1.3 Linux 的历史 1.1.4 Linux的优点 1.2 Linux与开源软件 ...六、 index(关键词索引)

    精通SQL 结构化查询语言详解

    9.2.5 采用JOIN关键字建立连接 9.3 表的连接类型  9.3.1 自连接  9.3.2 自然连接(NATURAL JOIN)  9.3.3 内连接(INNER JOIN) 9.3.4 外连接(OUTER JOIN)  9.3.5 交叉连接(CROSS JOIN)  9.4 UNION与UNION ...

Global site tag (gtag.js) - Google Analytics