一直以来,对数据库只是会用,很少系统的学习过,很多概念知道但是不是很熟悉。
索引--可以加快搜索速度。这是我脑子里面的概念,可是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建立主键
分享到:
相关推荐
而非聚类索引则像查找汉字时先查偏旁部首再查具体汉字,索引目录与正文数据分开,索引项包含指向实际数据的指针。 选择合适的索引类型取决于应用场景。聚类索引适用于需要保持物理顺序的场景,如事务处理系统,而非...
2. 存储过程与触发器:了解存储过程和触发器的编写与调用,提升数据库的可维护性和性能。 3. 视图:学习视图的概念,如何创建和使用视图,以及视图在数据安全和简化查询中的作用。 四、事务与并发控制 1. 事务管理...
10. **性能优化**:包括查询优化、索引使用、分区策略、缓存机制和硬件调优,以提高数据库性能。 11. **分布式数据库**:在多个地理位置分散的节点上分布数据,提供高可用性和容错性。分布式数据库需要解决数据复制...
EXCEL版本的行业类别数据字典是一种常见的形式,它通常以表格的形式呈现,包含字段名、字段描述、数据类型、长度、是否为主键、允许空值、默认值、索引等关键信息。使用者可以通过Excel的筛选、排序和公式功能,对...
通过索引、查询优化、分区和归档等手段提高数据库的读写速度和整体性能。 9. NoSQL与NewSQL: 非关系型数据库(NoSQL)适应大数据时代的需求,如键值对、文档型、列族和图形数据库。NewSQL是近年来出现的新一代...
2. **数据库设计**:系统包含了数据库的设计和集成,可能使用了如SQL Server、MySQL或Oracle等关系型数据库管理系统,用于存储和管理大量毕业生的信息。数据库设计包括表结构、数据类型选择、主键设置、索引优化等...
- **物理设计**:考虑存储效率和访问性能,进行索引、分区、存储过程等设计。 #### 四、数据库存储技术 - **存储与文件结构**:了解不同的文件存储格式,如堆文件、索引文件等。 - **索引技术**:掌握B树、B+树、...
在实际操作中,数据库系统的物理数据模型构建往往由数据库管理系统(如SQL Server)自动完成,同时建立主键和外键的索引策略来提升查询效率,特别是对于用户编号、图书编号与时间这些经常被查询的字段,需要建立专门...
- 通过索引、分区、归档、查询优化等方式提高数据库性能。 - 分析查询执行计划,避免全表扫描,合理利用JOIN操作。 6. 数据库备份与恢复: - 数据库备份是为了防止数据丢失,常见的备份策略有完整备份、增量备份...
ER图是概念设计常用工具,逻辑设计则将ER图转化为关系模式,物理设计考虑存储效率和性能优化。 5. 数据完整性:确保数据的准确性和一致性是数据库的关键。完整性规则包括实体完整性(主键约束)、参照完整性和用户...
- 物理设计:考虑存储和性能因素,如表的分区、索引选择等。 4. 数据库事务与并发控制 - 事务:数据库操作的基本单位,具有原子性、一致性、隔离性和持久性(ACID特性)。 - 并发控制:解决多个事务同时操作...
5. 数据库完整性:包括实体完整性(主键约束)、参照完整性(外键约束)和用户定义的完整性,确保数据的准确性和一致性。 6. 数据库安全性:涉及用户权限管理、角色授权、访问控制,以及审计跟踪等,防止非法访问和...
9. **数据挖掘与大数据**:数据库技术也延伸到了数据挖掘和大数据领域,涉及数据预处理、关联规则、聚类、分类和预测等算法。Hadoop和Spark等框架提供了处理大规模数据的能力。 这些是《数据库系统概论》第四版中...
3. SQL语言:学习SQL(Structured Query Language)的语法,包括数据查询、插入、更新和删除,以及创建和管理数据库对象如表、视图、索引等。此外,SQL的子查询、连接操作和聚合函数也是考试的重点。 4. 数据库设计...
- 索引(Index):加快查询速度,通过创建唯一或非唯一的索引来提高查找效率。 - 查询优化:选择最优查询路径,通过EXPLAIN分析查询执行计划。 - 数据库分区(Partitioning)和分片(Sharding):将大表分成多个...
4. **查询处理**:探讨了查询解析、查询优化和执行的过程,包括查询计划的选择、索引的使用以及嵌套查询的处理。 5. **事务管理**:讲述了事务的概念、ACID属性(原子性、一致性、隔离性和持久性),并发控制(如...
(30) 分区(Partitioning):数据库分区是将大表分成多个较小的部分,每个部分存储在不同的磁盘或服务器上,以提高查询性能和管理效率。 (31) 视图(View):视图是从一个或多个表中选择数据的虚拟表,不实际存储...