`
- 浏览:
139746 次
- 性别:
- 来自:
北京
-
使用索引的意义
• 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。
• 使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。
使用索引的代价
索引需要占用数据表以外的物理存储空间。
• 创建索引和维护索引要花费一定的时间。
• 当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。
• 创建索引的列
主键
• 外键或在表联接操作中经常用到的列
• 在经常查询的字段上最好建立索引
不创建索引的列
• 很少在查询中被引用
• 包含较少的惟一值
• 定义为 text、ntext 或者 image 数据类型的列
何时创建聚集索引?
Clustered Index会提高大多数table的性能,尤其是当它满足以下条件时:
1. 独特, 狭窄, 静止: 最重要的条件
2. 持续增长的,最好是只向上增加。例如:
• Identity
• Date, identity
• GUID (only when using newsequentialid() function)
以下情况不要建索引:
• 1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。
• 2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。
• 3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新
以下情况要建立索引
SELECT c.companyID, c.companyName FROM Companies c, User u WHERE c.companyID = u.fk_companyID AND c.numEmployees >= 0 AND c.companyName LIKE '%i%' AND u.groupID IN (SELECT g.groupID FROM Groups g WHERE g.groupLabel = 'Executive')
这条语句涉及3个表的联接,并且包括了许多搜索条件比如大小比较,Like匹配等。在没有索引的情况下Mysql需要执行的扫描行数是77721876行。而我们通过在companyID和groupLabel两个字段上加上索引之后,扫描的行数只需要134行。在Mysql中可以通过Explain Select来查看扫描次数。可以看出来在这种联表和复杂搜索条件的情况下,索引带来的性能提升远比它所占据的磁盘空间要重要得多。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
数据库中索引原理 数据库中索引原理 数据库中索引原理 数据库中索引原理
535303 数据库索引设计与优化 本人是一个IT开发爱好者,从事Android的开发工作。热爱学习新技术。 * 若您也有共同的兴趣爱好,欢迎你加入QQ技术群让我们共同发现新技术。 【GitHub】https://github.com/xiaole0310 ...
《数据库索引设计与优化》提供了一种简单、高效、通用的关系型数据库索引设计方法。 作者通过系统的讲解及大量的案例清晰地阐释了关系型数据库的访问路径选择原理, 以及表和索引的扫描方式,详尽地讲解了如何快速地...
数据库索引PPT学习教案.pptx
数据库索引设计与优化,数据库必学经典,深入学习数据库索引设计与优化,数据库核心基础能力提升经典书籍。
浅析实时数据库的应用。并在其中介绍实时数据库的索引技术的应用和实现方法。和供学习实时数据库的研究使用。
用Java实现了数据库索引中的b+ tree数据结构,可实现查询,删除,增加等功能.想学习数据库索引的同学不要错过。
MYSQL数据库大进级,是非常全面的MYSQL数据库进阶学习资料!
数据库检索学习课件两大索引数据库SCI.pptx
深入学习数据库必读书籍,深入讲解数据库中索引的设计和优化原则
VF数据库索引及记录操作PPT教案学习.pptx
lucene建立数据库索引的问题,在这里,把其中的一些问题补充说明,希望对大家有新的帮助,希望大家相互提出问题,相互学习,共同进步!!
MSSQLserver数据库学习全程笔记及学习样例,从简单的数据库建立、建表到各种数据查询方法、视图建立与使用、存储过程及索引的建立与使用,从简单到深入到精深!无限全面,简直是数据库学习的极品和必备!
对学习数据库系统原理有帮助 创建角色命令: CREATE ROLE <角色名> IDENTIFIED BY <口令> 注意:角色名必须唯一,不能与数据库其它角色或用户同名。 角色刚建完时,没有与之联系的任何权限或其它角色。 创建角色时...
对新手学习数据库有很大帮助。如何建表和多表索引
6.20 sql(索引) 3 6.21 sql(软件项目流程) 3 6.22 查询(单表查询) 4 6.25 数据统计 5 6.27 SQL(多表查询与统计) 7 6.28 SQL(视图) 9 6.29 sql语法 10 7.4 sql(事务处理、游标) 17 7.5存储过程 21 7.6触发器 ...
主要给大家介绍了关于MySQL中有哪些情况下数据库索引会失效的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
数据库,索引,主键,约束,sql的相关自学学习资料,比较乱,但都是个人心得,值得看看
数据库基础视图与索引PPT学习教案.pptx