`
darkma
  • 浏览: 521763 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

数据库建索引规则

阅读更多
数据库建立索引常用的规则如下:
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
  A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
  B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否
     极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
  C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
  D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
  E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。


分享到:
评论

相关推荐

    MySQL创建全文索引分享

    在MySql数据库中,有四种索引:聚焦索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FUNLLTEXT INDEX)。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术...

    基于索引的SQL语句优化之降龙十八掌

    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合...

    数据库系统设计.pdf

    (1) 索引存取⽅法: 确定为哪些属性列建⽴索引,哪些属性列建⽴组合索引,哪些索引要设计为唯⼀索引。 例: 在学⽣表Student上建⽴索引 CREATE INDEX S_name ON Student (Ssex, Sage DESC); (2)聚簇存取⽅法的...

    浅谈数据库设计方法.doc

    有合理的数据库建 模工具能够快速完成数据库设计,比如我们能够使用PowerDesigner9.5工具,采用这种 数据库建模工具能够快速展开数据库设计。 1.3 逻辑设计的重要性 目前CASE工具一直在不断的发展,我们采用逻辑设计...

    数据库设计规范.pdf

    其中table是建⽴索引的表名,column1和column2是建⽴索引的字段名。 索引名限制在32个字符内。当索引名超过32字符时,可⽤缩写来减少索引名的长度,如description --> desc;information --> info; address --> ...

    数据库设计约定.pdf

    ⽽⼜读写频繁,另外建⼀张表 三、索引约定 三、索引约定 1、命名 、命名 主键:pk_columnName (或者让数据库⾃动命名); 唯⼀键:uk_columnName; 普通索引:ix_columnName; 组合索引ix_column1_column2_column3; 如...

    数据库系统之查询处理与优化.pdf

    索引连接⽅法 在SC表上建⽴属性sno的索引,(如果原来没有索引),对Student表中每⼀个元组,由sno值通过SC的索引查找相应的SC元组,把这些SC 元组和Student表中的元组处理完为⽌。 4.Hash Join⽅法 把连接属性作为...

    数据库表设计命名规范.doc

    主建、外键命名规则 1. 主键按照PK_的规则命名,其中为数据库表名,如:PK_SH_ACCIDEN T; 2. 唯一键按照UK_<table>_的规则命名,其中为数据块表名,为字段名 ; 3. 外键按照FK_<pppp>_<cccc>_的规则命名,其中为父...

    数据库设计思想.docx

    因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间; (3) 一个表中的字段个数越少越好。只有字段的个数少了,才能说明在系统中不存在...

    数据库系统原理实验大纲.doc

    1) SQL Server的逻辑组件 熟练掌握数据类型和表的概念 熟练掌握视图的概念 理解存储过程的作用 理解函数的用法 理解约束、规则与默认值等概念 了解排序规则 熟练掌握索引的概念及其作用 理解登录、用户、角色与组等...

    数据库设计的黄金经验.txt

    通俗地理解三个范式,对于数据库设计大有...因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间; (3) 一个表中的字段个数越少越好。只

    MySQL 数据库铁律(小结)

    好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表、建索引、写 SQL、ORM 映射等方面的处理约定。 1.建库铁律 – 铁律 Level 备注 字符集 使用 utf-8。如果存储的是表情则...

    数据库系统概论(第四版)答案.txt

    数据库系统概论(第四版)答案 第2章 关系数据库 1 .试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 2 .试述关系数据语言的特点和分类。 答:关系数据语言...

    mysql数据库的基本操作语法

    索引是存放在模式(schema)中的一个数据库对象,索引的作用就是提高对表的检索查询速度, 索引是通过快速访问的方法来进行快速定位数据,从而减少了对磁盘的读写操作。 索引是数据库的一个对象,它不能独立存在,...

    最新Lucene教程

    索引包是整个系统核心,全文检索的根本就是为每个切出来的词建索引,查询时就只需要遍历索引,而不需要去正文中遍历,从而极大的提高检索效率。 5)org.apache.1ucene.queryParser查询分析器,实现查询关键词间的...

    ORACLE9i_优化设计与系统调整

    §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §...

    mysql sharding(碎片)介绍

    试想,如果一张表中的数据量达到了千万甚至上亿级别的时候,不管是建索引,优化缓存等,都会面临巨大的性能压力。sharding通过某种条件,把同一个数据库中的数据分散到多个数据库或多台机器上,以减小单台机器压力。...

    MySQL hint用法解析

    我们可以对MySQL的对象(表、索引、触发器、自建函数、存储过程等)做注释(comment),这样做的目的是标识该对象的作用等以增强代码的可读性、方便其他同事快速读懂我们写的代码或某个数据库对象的作用,说白了,...

    高性能MySQL(第3版).part2

    1.5.3MySQL内建的其他存储引擎19 1.5.4第三方存储引擎22 1.5.5选择合适的引擎24 1.5.6转换表的引擎27 1.6MySQL时间线(Timeline)29 1.7MySQL的开发模式32 1.8总结33 第2章MySQL基准测试35 2.1为什么需要...

    Java爬虫学习及建站应用.zip

    遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施...

Global site tag (gtag.js) - Google Analytics