美文网首页
SQL-索引

SQL-索引

作者: 小y哥哥 | 来源:发表于2016-08-11 01:37 被阅读98次

唯一索引、主键索引和聚集索引

A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
B)对于非聚集索引,有些查询甚至可以不访问数据页。
C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。
D)一些情况下,索引还可用于避免排序操作。
E )虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引。增加了数据库的存储空间。

索引类型

A)聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。在一张表上只能创建一个聚集索引
B)非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

创建索引可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

增加索引也有许多不利的方面。
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

在经常需要搜索的列上
在作为主键的列上
在经常用在连接的列上
在经常需要根据范围进行搜索的列上创建索引
在经常需要排序的列上创建索引
在经常使用在WHERE子句中的列上面创建索引

对于那些在查询中很少使用或者参考的列不应该创建索引
对于那些只有很少数据值的列也不应该增加索引
对于那些定义为text, image和bit数据类型的列不应该增加索引
当修改性能远远大于检索性能时,不应该创建索引

相关文章

  • SQL-索引

    唯一索引、主键索引和聚集索引 A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页...

  • SQL-索引

    当向表中插入一行数据时,数据库服务器不会试图将数据放到表中的特定位置。因此当查询时,服务器需要通过检查表中的每一行...

  • 一、数据库之SQL语句

    一、SQL创表 二、SQL-插入 三、SQL-修改 四、SQL-删除 五、SQL-查询 以上是SQL语句常用的用法...

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • sql-将日期转换为YYYYMM格式 几种方式

    sql-将日期转换为YYYYMM格式SELECT CONVERT(nvarchar(6), GETDATE(), ...

  • oracle 常用查询语言

    SQL- Data Query Language 1. select 2. where 3. distinct 4...

  • Ubuntu下mysql的常用命令,MySQL数据库的基本操作命

    一、mysql服务操作 0.0 进入mysql $mysql -uroot -p 0、查看数据库版本 sql-> ...

  • mybatis动态SQL

    动态 SQL-参考链接有兴趣深究的可以去查看mybatis-3-mapper.dtd这个文件。http://myb...

  • SQL-本年

    select dateadd(qq, datediff(qq,0,getdate()), 0) select DA...

  • sql-留存

    --sumdate--返回结果的注册日期 --REGDATE--子表注册日期 --LOGINDATE--次日登陆日...

网友评论

      本文标题:SQL-索引

      本文链接:https://www.haomeiwen.com/subject/mbwjsttx.html