`
唯快不破
  • 浏览: 82998 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

分开SQL Server的主键和索引,使用聚类索引提高性能!

阅读更多
一直以来,对数据库只是会用,很少系统的学习过,很多概念知道但是不是很熟悉。
   索引--可以加快搜索速度。这是我脑子里面的概念,可是SQL Server中索引有聚类索引(CLUSTERED)和非聚类索引。我数据表一般有ID字段,我就自然把它设置成了主键;而SQL Server会将主键设置为聚类索引,很多情况下,这是一种性能损失!!
1. SQL Server联机丛书中的介绍

根据数据库的功能,可在数据库设计器中创建三种类型的索引 — 唯一索引、主键索引和聚集索引。

提示   尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束或唯一约束。有关这些约束的更多信息,请参见主键约束和唯一约束。

唯一索引
唯一索引不允许两行具有相同的索引值。

主键索引
数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。

在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。

聚集索引
在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。

如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。

2. 聚集索引和非聚集索引




可考虑将聚集索引用于:

包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。

使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。

返回结果集查询。
数据表中的记录按照聚集索引排列的,所以将大规模查询的字段定义成聚类索引,能大大的提高性能!

3. 实际例子

如表结构TB_NEWS:四个字段

ID  uniqueidentifier(16)

NewsTitle varchar(200)

NewContent Text(16)

InsertDate smallDateTime(8)

-----------------------------------------------------------------------------

按照习惯,将表的字段设置后,顺手将主键设置为ID,这样做的后果就是:数据库自动为ID建立聚类索引。对于网站新闻,最主要的查询操作,查询按照时间段。典型的查询是

select ID, NewsTitle, NewContend, InsertDate

from TB_NEWS

where InsertDate between @DataTime1 and @DataTime2

在一个有大于105条数据的表中查询效率明显不高。数据表中记录存放竟然按照uniqueidentifier这样无序的东西存放,简直是资源浪费啊,查询将遍历所有记录,后果可想而知。用InsertDate 作聚类索引,查询速度绝对可以,InsertDate字段不会被修改,所以受影响的仅仅是插入数据操作。

单条的查询可以这样写:和只用ID的查询,不知道哪个更快:)可以测试一下,呵呵

select ID, NewsTitle, NewContend, InsertDate

from TB_NEWS

where InsertDate = @DataTime and ID= @ID

我觉得方法应该是:

1.设计表

2. 输入字段类型

3. 选择合适字段建立 聚类索引

4. 使用ID建立主键
分享到:
评论

相关推荐

    sql索引.docx

    而非聚类索引则像查找汉字时先查偏旁部首再查具体汉字,索引目录与正文数据分开,索引项包含指向实际数据的指针。 选择合适的索引类型取决于应用场景。聚类索引适用于需要保持物理顺序的场景,如事务处理系统,而非...

    SQL 2005课件

    2. 存储过程与触发器:了解存储过程和触发器的编写与调用,提升数据库的可维护性和性能。 3. 视图:学习视图的概念,如何创建和使用视图,以及视图在数据安全和简化查询中的作用。 四、事务与并发控制 1. 事务管理...

    数据库系统概论.zip

    10. **性能优化**:包括查询优化、索引使用、分区策略、缓存机制和硬件调优,以提高数据库性能。 11. **分布式数据库**:在多个地理位置分散的节点上分布数据,提供高可用性和容错性。分布式数据库需要解决数据复制...

    行业类别数据字典(含EXCEL,SQL,HTML)

    EXCEL版本的行业类别数据字典是一种常见的形式,它通常以表格的形式呈现,包含字段名、字段描述、数据类型、长度、是否为主键、允许空值、默认值、索引等关键信息。使用者可以通过Excel的筛选、排序和公式功能,对...

    数据库原理课件

    通过索引、查询优化、分区和归档等手段提高数据库的读写速度和整体性能。 9. NoSQL与NewSQL: 非关系型数据库(NoSQL)适应大数据时代的需求,如键值对、文档型、列族和图形数据库。NewSQL是近年来出现的新一代...

    系列1/5->高校毕业生管理与分析系统[后台][VC++]

    2. **数据库设计**:系统包含了数据库的设计和集成,可能使用了如SQL Server、MySQL或Oracle等关系型数据库管理系统,用于存储和管理大量毕业生的信息。数据库设计包括表结构、数据类型选择、主键设置、索引优化等...

    2009年计算机等级考试四级数据库工程师考试大纲

    - **物理设计**:考虑存储效率和访问性能,进行索引、分区、存储过程等设计。 #### 四、数据库存储技术 - **存储与文件结构**:了解不同的文件存储格式,如堆文件、索引文件等。 - **索引技术**:掌握B树、B+树、...

    基于数据挖掘的图书馆科学决策模型构建研究.pdf

    在实际操作中,数据库系统的物理数据模型构建往往由数据库管理系统(如SQL Server)自动完成,同时建立主键和外键的索引策略来提升查询效率,特别是对于用户编号、图书编号与时间这些经常被查询的字段,需要建立专门...

    2008、2009四级数据库真题

    - 通过索引、分区、归档、查询优化等方式提高数据库性能。 - 分析查询执行计划,避免全表扫描,合理利用JOIN操作。 6. 数据库备份与恢复: - 数据库备份是为了防止数据丢失,常见的备份策略有完整备份、增量备份...

    数据库系统概论,这个版本还很不错

    ER图是概念设计常用工具,逻辑设计则将ER图转化为关系模式,物理设计考虑存储效率和性能优化。 5. 数据完整性:确保数据的准确性和一致性是数据库的关键。完整性规则包括实体完整性(主键约束)、参照完整性和用户...

    数据库系统概念,第六版答案

    - 物理设计:考虑存储和性能因素,如表的分区、索引选择等。 4. 数据库事务与并发控制 - 事务:数据库操作的基本单位,具有原子性、一致性、隔离性和持久性(ACID特性)。 - 并发控制:解决多个事务同时操作...

    数据库系统教程习题解答及上机指导

    5. 数据库完整性:包括实体完整性(主键约束)、参照完整性(外键约束)和用户定义的完整性,确保数据的准确性和一致性。 6. 数据库安全性:涉及用户权限管理、角色授权、访问控制,以及审计跟踪等,防止非法访问和...

    数据库系统概论课后习题答案 高教第四版版 王珊

    9. **数据挖掘与大数据**:数据库技术也延伸到了数据挖掘和大数据领域,涉及数据预处理、关联规则、聚类、分类和预测等算法。Hadoop和Spark等框架提供了处理大规模数据的能力。 这些是《数据库系统概论》第四版中...

    数据库期末考试试卷(含答案)

    3. SQL语言:学习SQL(Structured Query Language)的语法,包括数据查询、插入、更新和删除,以及创建和管理数据库对象如表、视图、索引等。此外,SQL的子查询、连接操作和聚合函数也是考试的重点。 4. 数据库设计...

    计算机英语

    9. **clustering**:在数据库中,聚类指的是将相关数据物理存储在一起,以提高查询性能。 10. **clause**:SQL语句中的子句,如SELECT, FROM, WHERE等,共同构成了完整的查询语句。 11. **collation**:排序规则...

    《数据库系统概论》试题.

    - 索引(Index):加快查询速度,通过创建唯一或非唯一的索引来提高查找效率。 - 查询优化:选择最优查询路径,通过EXPLAIN分析查询执行计划。 - 数据库分区(Partitioning)和分片(Sharding):将大表分成多个...

    数据库系统概念(原书第六版)——原整版带书签

    4. **查询处理**:探讨了查询解析、查询优化和执行的过程,包括查询计划的选择、索引的使用以及嵌套查询的处理。 5. **事务管理**:讲述了事务的概念、ACID属性(原子性、一致性、隔离性和持久性),并发控制(如...

    数据库名词解释.doc

    (30) 分区(Partitioning):数据库分区是将大表分成多个较小的部分,每个部分存储在不同的磁盘或服务器上,以提高查询性能和管理效率。 (31) 视图(View):视图是从一个或多个表中选择数据的虚拟表,不实际存储...

Global site tag (gtag.js) - Google Analytics