`
solagratia
  • 浏览: 12841 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据库索引的概念,特点,分类以及作用

阅读更多

一、索引的概念

索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

二、索引的特点

1.索引可以加快数据库的检索速度

2.索引降低了数据库插入、修改、删除等维护任务的速度

3.索引创建在表上,不能创建在视图上

4.索引既可以直接创建,也可以间接创建

5.可以在优化隐藏中,使用索引

6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引

7.其他

三、索引的优点

1.创建唯一性索引,保证数据库表中每一行数据的唯一性

2.大大加快数据的检索速度,这也是创建索引的最主要的原因

3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

四、索引的缺点

1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

五、索引分类

1.直接创建索引和间接创建索引

直接创建索引: CREATE INDEX mycolumn_index ON mytable (myclumn)

间接创建索引:定义主键约束或者唯一性键约束,可以间接创建索引

2.普通索引和唯一性索引

普通索引:CREATE INDEX mycolumn_index ON mytable (myclumn)

唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

3.单个索引和复合索引

单个索引:即非复合索引

复合索引:又叫组合索引,在索引建立语句中同时包含多个字段名,最多16个字段

CREATE INDEX name_index ON username(firstname,lastname)

4.聚簇索引和非聚簇索引(聚集索引,群集索引)

聚簇索引:物理索引,与基表的物理顺序相同,数据值的顺序总是按照顺序排列

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH

ALLOW_DUP_ROW(允许有重复记录的聚簇索引)

非聚簇索引:CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

六、索引的使用

1.当字段数据更新频率较低,查询使用频率较高并且存在大量重复值是建议使用聚簇索引

2.经常同时存取多列,且每列都含有重复值可考虑建立组合索引

3.复合索引的前导列一定好控制好,否则无法起到索引的效果。如果查询时前导列不在查询条件中则该复合索引不会被使用。前导列一定是使用最频繁的列

4.多表操作在被实际执行前,查询优化器会根据连接条件,列出几组可能的连接方案并从中找出系统开销最小的最佳方案。连接条件要充份考虑带有索引的表、行数多的表;内外表的选择可由公式:外层表中的匹配行数*内层表中每一次查找的次数确定,乘积最小为最佳方案

5.where子句中对列的任何操作结果都是在sql运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译
时就能得到,那么就可以被sql优化器优化,使用索引,避免表搜索(例:select * from record where
substring(card_no,1,4)=’5378’

&& select * from record where card_no like ’5378%’)任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边

6.where条件中的’in’在逻辑上相当于’or’,所以语法分析器会将in ('0','1')转化为column='0' or
column='1'来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用column上的索引;但实际上它却采用了"or策略
",即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉重复行,最后从这个临时表中计算结果。因此,实际过程没有利用
column上索引,并且完成时间还要受tempdb数据库性能的影响。in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子
句拆开;拆开的子句中应该包含索引

7.要善于使用存储过程,它使sql变得更加灵活和高效

 

分享到:
评论

相关推荐

    关于索引概念\特点\优点\缺点\分类\使用

    简要概述索引的概念\特点\优点\缺点\分类\使用

    IBM_DB2通用数据库SQL入门

    1.2 数据库系统特点 3 1.3 DBMS的工作原理 5 1.3.1 数据库管理系统的功能 5 1.3.2 存储管理程序 6 1.3.3查询处理程序 7 1.3.4 事务管理程序 8 1.3.5 日志 9 1.3.6 数据字典 10 1.3.7 事务 10 1.4 关系...

    1.试述数据、数据库、数据库系统、数据库管理系统的概念。.pdf

    1.试述数据、数据库、数据库系统、数据库管理系统的概念。 答: (1)数据(Data):描述事务的符号记录称为数据。数据的种类有数字、⽂字、图形、图像、声⾳、正⽂等。数据与其语义是不可分的。解 析在现代计算机系统...

    什么是NoSQL数据库?

    那么,就让我们先来看一看关系型数据库的历史、分类和特征吧。 关系型数据库简史 1969年,埃德加•弗兰克•科德(Edgar Frank Codd)发表了划时代的论文,首次提出了关系数据模型的概念。但可惜的是,刊登论文的...

    什么是数据库设计数据库设计的步骤.docx

    数据库设计的特点 数据库建设是硬件、软件和干件的结合 三分技术,七分管理,十二分基础数据 技术与管理的界面称之为"干件" 数据库设计应该与应用系统设计相结合 结构(数据)设计:设计数据库框架或数据库结构 行为...

    精心整理的数据库系统概论复习题.doc

    1数据、数据库、数据库管理系统、数据库系统的概念及其关系。 数据:描述事物的符号记录 数据库(Database,简称DB):是长期储存在计算机内、有组织的、可共享的大量数据的集 合 数据库管理系统:位于用户与操作系统...

    数据库设计方法.doc

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

    数据库系统基础知识.doc

    它为用户提供了大量描述(建立)数据 库、操纵(检索、排序、索引、显示、统计计算等)数据库和维护(修改、追加、删除 等)数据库的方法和命令。而且它还能自动控制数据库的安全,及数据库的数据完整。 比如:...

    数据库基础与管理信息系统概述.doc

    然后介绍管理信息系统的定义、特点、结构、分类,以及管理信息系统的 开发方法。 1.1 什么是数据库 数据库描述了现实世界中的某些方面,构成了现实世界中的一个微小世界。数据库是 一个逻辑上紧密相连的数据集。该...

    MySQL的基础知识笔记

    2. 数据库基础知识介绍:介绍了MySQL的基本概念、数据类型、变量、索引、事务、提交和回滚等知识。 3. MySQL的安装:介绍了如何安装MySQL,包括选择安装方式、配置MySQL环境变量等。 4. MySQL常用的一些命令介绍:...

    数据库管理系统重要知识点整理.doc

    14关系数据库常用的存取方法有索引方法、聚簇方法和HASH方法 15数据库的维护工作:1、数据库的转储和恢复2、数据库的安全性、完整性控制。3、数 据库性能的监督、分析和改造4、数据库的重组织与重构造 16笛卡儿积...

    数据库设计方案.doc

    D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引, 形成数据库内模式。 1. 需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求) 。 需求分析的重点...

    常见(MySQL)面试题(含答案).docx

    各种索引的概念:索引,主键,唯一索引,联合索引,索引分类 建立索引的使用场景 Myql中的事务回滚机制,持久性,隔离级别的实现 说一说drop、delete与truncate的区别 什么叫视图?游标是什么? 什么是存储过程?用...

    数据库的设计和管理规范.doc

    4 1.1 外部设计 4 1.1.1 类型划分 4 1.1.2 使用它的程序 4 1.1.3 标识符和状态 4 1.2 结构设计 6 1.2.1 概念结构设计 6 1.2.2 逻辑结构设计 6 1.3 运用设计说明 7 1.3.1 数据库字典的设计 7 1.3.2 安全保密的设计 7 ...

    数据库课程设计-仓库管理系统.doc

    然后结合 软件工程的理论和教材中数据库设计的六个阶段(重点是前三个阶段)完成设计任务, 即系统结构设计(需求分析、概念结构设计、逻辑结构设计、物理结构设计)和系统功 能设计。 设计要求: 1、撰写课程设计...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    02-数据库概念介绍.avi 03-数据库种类介绍及关系型数据库原理.avi 04-非关系型数据库介绍.avi 05-非关系型数据库种类介绍.avi 06-关系型数据库产品介绍01.avi 07-关系型数据库产品介绍02.avi 08-非关系型数据库产品...

    论文研究-高速以太网中实时相似性匹配算法的研究.pdf

    该算法充分考虑了数据流五元组的随机性分布特点,通过一种改进的XOR-SHIFT算法将数据流分类索引,并提出了同类数据库(SD)及异类数据库(HD)的概念,基于距离测度分别设计了加权相似性比较函数,使得特征值能更...

Global site tag (gtag.js) - Google Analytics