SQL Server 溢出页与索引详解
1. 溢出页的使用与注意事项
溢出页是一种链表结构,单个列最多可容纳 2GB 的存储。不过,通常不建议在单个列(甚至一行)中存储 2GB 的数据,但在必要时可以使用。
当大值数据存放在主页面之外时,访问这些数据的成本会比将它们都放在同一数据页中高得多。但如果在查询中很少使用这些数据,将它们放在页外可以减少磁盘访问,减小数据占用空间。
在允许数据溢出页面时要格外小心,这会增加处理成本,尤其是在查询中包含存储在溢出页的数据时(例如在生产代码中频繁使用 SELECT *
)。因此,正确选择数据类型以最小化数据行的大小,只包含经常需要的值很重要。如果经常需要大值数据,将其保留在行内;否则,将其放在行外。
建议 :避免在生产代码中使用 SELECT * FROM <tablename>
类型的查询,因为这可能会获取到不需要的数据,当这些数据位于主数据页之外时,会导致性能下降。
2. 索引概述
索引可以让 SQL Server 引擎快速、有针对性地检索数据,而不是简单地扫描整个表。合理使用索引可以大幅提高数据检索速度,但随意创建索引可能会适得其反。
要有效地使用索引,需要了解数据随时间的变化情况、查询需求以及预计处理的数据量。创建和维护索引是有成本的,在决定是否使用索引来提高某个查询的性能时,需要考虑对系统整体性能的影响。
后续将介绍以下内容:
- 索引的基本结构
- 两种基本类型的索引及其对表结构的影响
- 基