4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
数据库索引,你该了解的几件事_知识库_博客园
来自 : kb.cnblogs.com/page/781... 发布时间:2021-03-25

2.1.1 整表扫描和索引扫描

整表扫描和索引扫描是Sql Server数据库检索到数据的唯一的两种方式。除此之外,没有第三种方式供Sql Server检索到数据。

整表扫描

最直接的检索方式, Sql Server进行表扫描时,会从表头开始扫描,直到整个表结束。 当找到符合条件的记录,便把该记录存在结果集中。对于小数据量的表,这是一种很快捷的方式。如果没有为表创建索引,那么Sql server便按这种方式检索数据。

索引扫描

如果为表创建了索引,在进行检索前,Sql Server优化器会根据查询条件,从可用的索引中选择最优化的索引。检索时,便会遍历B树,当找到符合条件的记录,便把该记录存在结果集中。因此,检索大数据量的表,使用索引相对于整表扫描会显著地提高性能。

2.1.2 B-Tree \"\"

2.2.3 聚集索引

\"\"

叶子节点存放的是实际的数据。索引的入口点存放在master- sys.indexes中。

2.2.4 非聚集索引

2.4.1 堆上的非聚集索引(Non-clustered index on heap)

\"\"

与聚集索引很类似。不同处在:叶子节点存放的不是实际数据,而是指向实际数据的指针。检索速度非常接近于聚集索引,比起聚集索引,实际上只是多一步由根据指针检索到实际数据的过程。

2.4.2 聚集表上的非聚集索引

3. 管理索引

3.1 创建

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index name ON table or view name
( column name [ASC|DESC] [,...n])
INCLUDE ( column name [, ...n])
[WITH
[PAD_INDEX = { ON | OFF }]
[[,] FILLFACTOR = fillfactor ]
[[,] IGNORE_DUP_KEY = { ON | OFF }]
[[,] DROP_EXISTING = { ON | OFF }]
[[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
[[,] SORT_IN_TEMPDB = { ON | OFF }]
[[,] ONLINE = { ON | OFF }
[[,] ALLOW_ROW_LOCKS = { ON | OFF }
[[,] ALLOW_PAGE_LOCKS = { ON | OFF }
[[,] MAXDOP = maximum degree of parallelism
]
[ON { filegroup | partition scheme name | DEFAULT }]

3.2 修改

ALTER INDEX { name of index | ALL }
ON table or view name
{ REBUILD
[ [ WITH (
[ PAD_INDEX = { ON | OFF } ]
| [[,] FILLFACTOR = fillfactor
| [[,] SORT_IN_TEMPDB = { ON | OFF } ]
| [[,] IGNORE_DUP_KEY = { ON | OFF } ]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF } ]
| [[,] ONLINE = { ON | OFF } ]
| [[,] ALLOW_ROW_LOCKS = { ON | OFF } ]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF } ]
| [[,] MAXDOP = max degree of parallelism
) ]
| [ PARTITION = partition number
[ WITH ( partition rebuild index option
[ ,...n ] ) ] ] ]
| DISABLE
| REORGANIZE
[ PARTITION = partition number ]
[ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
| SET ([ ALLOW_ROW_LOCKS= { ON | OFF } ]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF } ]
| [[,] IGNORE_DUP_KEY = { ON | OFF } ]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF } ]
)
} [ ; ]

3.3 删除

DROP INDEX table name . index name 

4. 使用索引应注意十么

1)聚集索引通常速度优于非聚集索引

2) 建索引时应考虑是否有足够的空间。索引占据空间,平均约1.2倍数据库本身大小。

3) 在经常用于查询或聚合条件的字段上建立聚集索引。这类查询条件包括 between, , ,group by, max,min, count等。

4) 不要在经常作为插入,且插入字段无序的列上建立聚集索引。 插入数据行会涉及分页,rebuild索引会消耗大量时间。参考文末\"一个不恰当使用聚集索引的例子\"。

5) 在值高度的唯一性字段上建立索引。不能在诸如性别的字段上建立索引。

6) 只有作为索引的第一个列包含在查询条件中,该索引才的作用。

打个比方,我们用偏旁+部首来查汉字,那么偏旁首先必须包括在查询条件中,只有先定位偏旁,再结合部首,才能发挥偏旁+部首来检索的快速功效。

7) 删除一直不用的索引。特别是对于删除和修改比较频繁的数据表,必须考虑如何精华索引。

本文链接: http://maxdop.immuno-online.com/view-752406.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://