`

sql server 索引(转)

 
阅读更多

首先,无索引的表,查询时,是按照顺序存续的方法扫描每个记录来查找符合条件的记录,这样效率十分低下,举个例子,如果我们将字典的汉字随即打乱,没有前面的按照拼音或者部首查询,那么我们想找一个字,按照顺序的方式去一页页的找,这样效率有多底,大家可以想象。

 

      而我们的索引就是字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,就像字典一样有按照拼音查询和部首查询,sql的索引也有两种,聚集索引和非聚集索引,当然还有其他的一些,例如符合索引或唯一索引,但是后面这些基本上上很少用到,我们在这里主要介绍一下聚集索引和非聚集索引。

 

     聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,其实理解起来非常简单,还是举字典的例子:如果按照拼音查询,那么都是从a-z的,是具有连续性的,a后面就是b,b后面就是c, 聚集索引就是这样的,他是和表的排列顺序是一样的,例如有id为聚集索引,那么1后面肯定是2,2后面肯定是3,所以说这样的搜索顺序的就是聚集索引。非聚集索引就和按照部首查询是一样是,可能按照偏房查询的时候,根据偏旁‘弓’字旁,索引出两个汉字,张和弘,但是这两个其实一个在100页,一个在1000页,(这里只是举个例子),他们的索引顺序和数据库表的排列顺序是不一样的,这个样的就是非聚集索引。

      所以下面的一句话大家就很容易理解了:聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

 

一、聚集索引所在列或列的组合最好是唯一的

二、最好使用窄列或窄列组合作为聚集索引列

三、使用值很少变动的列或列的组合作为聚集索引

  •     行从一页移动到另一页,这个操作是需要开销的,不仅如此,这个操作还可能影响到其他行,使得其他行也需要移动位置,有可能产生分页
  •     行在页之间的移动会产生索引碎片
  •     键的改变会影响到非聚集索引,使得非聚集索引的书签也需要改变,这又是一笔额外的开销

四、最好使用自增列作为聚集索引列

近我碰到过一个情况。一个表每隔几个月性能就奇慢无比,初步查看是由于有大量的索引碎片。可是每隔几个月重建一次索引让我无比厌烦。最终我发现,问题是由于当时设计数据库的人员将聚集索引建在了GUID上,而GUID是随机生成的,则可能插入到表的任何位置,从而大大增加了碎片的数量。因此造成上面这种情况。

分享到:
评论

相关推荐

    SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中 include 的魅力(具有包含性列的索引) SQL Server 索引中 include 的魅力(具有包含性列的索引)是指在非聚集索引中添加非键列,以扩展索引的功能,提高查询性能。通过将非键列添加到非聚集索引...

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    "SQL Server 索引结构及其使用(聚集索引与非聚集索引)" 数据库索引是数据库性能优化的关键技术之一。SQL Server 提供了两种索引:聚集索引(clustered index)和非聚集索引(nonclustered index)。本文将详细介绍...

    SqlServer索引工作原理

    SqlServer索引工作原理 在了解SqlServer索引工作原理之前,我们需要了解什么是索引。索引是一种特殊的数据库结构,它可以快速地定位和检索数据。索引的作用是加快数据的查询速度,使得数据库中的数据更易于管理和...

    sqlserver索引表设计数据类型选择

    该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接

    SQLServer索引碎片和解决方法

    SQLServer中的索引碎片是影响数据库性能的重要因素,它分为外部碎片和内部碎片两种类型。外部碎片发生在索引页不在其逻辑顺序上时,导致查询过程中需要额外的页切换,尤其是对于返回有序结果集的查询,这将显著降低...

    优化SQL Server索引的小技巧

    优化 SQL Server 索引的小技巧 SQL Server 中有多种可以让您检测、调整和优化 SQL Server 性能的工具。其中,优化数据库索引的使用是提高 SQL Server 性能的关键因素之一。在本文中,我们将讨论如何用 SQL Server ...

    sqlserver自动生成sql语句工具sqlserver转oracle

    描述中提到的"sqlserver转oracle"则是指将SQL Server数据库的内容迁移到Oracle数据库的过程。这个过程涉及到SQL语法的转换,因为SQL Server和Oracle虽然都遵循SQL标准,但各自的语法特性和函数库有所不同。例如,SQL...

    SqlServer重建索引

    用于SqlServer的索引重建,全语句实现,可根据实际情况进行部分关键表的索引重建。

    Sqlserver索引分析

    Sqlserver索引分析,Sqlserver索引缺失,Sqlserver索引建议

    SQLserver索引失效举例.txt

    SQLserver索引失效举例.txt

    sql server 重新组织和重新生成索引

    SQL Server 重新组织和重新生成索引 在 SQL Server 中,索引的碎片可能会对查询性能产生影响,因此需要对索引进行维护。SQL Server 2005 提供了重新组织和重新生成索引的功能,以修复索引碎片。 重新组织索引 ...

    SQLServer索引设计经验谈

    ### SQL Server索引设计经验谈 #### 摘要 本文旨在探讨Microsoft SQL Server中的索引设计技巧,尤其是如何通过合理的索引策略来优化查询性能。通过对聚集索引与非聚集索引的选择、索引列的排序方式、填充因子的...

    SQL Server 索引结构及其使用

    尤其在使用SQL Server数据库时,了解并合理利用其索引结构能够显著提升数据检索效率。本文将详细探讨SQL Server中的索引结构以及如何恰当地使用它们。 首先,索引在SQL Server中分为两大类:聚集索引和非聚集索引。...

    SQLServer索引调优实践

    资源名称:SQLServer索引调优实践资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    SQL Server 索引基础知识

    ### SQL Server 索引基础知识知识点汇总 #### 一、记录数据的基本格式 - **数据页作为基础单位**:在 SQL Server 中,数据页是最基本的存储单位,无论是缓存中的数据还是磁盘上的物理存储,都以数据页的形式存在。...

    数据库SQLSERVER索引

    我在这里只讨论两种SQLServer索引,即clustered索引和nonclustered索引。当考察建立什么类型的索引时,你应当考虑数据类型和保存这些数据的column。同样,你也必须考虑数据库可能用到的查询类型以及使用的最为频繁的...

    SQL SERVER索引文件迁移到文件组

    ### SQL Server索引文件迁移到文件组的知识点详解 #### 一、背景介绍 在SQL Server数据库管理系统中,为了提高数据库性能和管理效率,经常需要对数据库进行优化。其中一种重要的优化手段就是合理地管理数据库文件...

    SqlServer 数据库索引优化详解

    深入理解SqlServer索引机制及合理优化数据库

    SQLServer查看缺失索引

    SQLServer查看缺失索引

Global site tag (gtag.js) - Google Analytics