索引概述:
是一个单独的、物理的数据结构,索引是依赖于表建立的,提供了数据库中编排表中数据的内部方法,一个表的存储是有两部风组成,存放表得数据页面和存放索引页面。
索引一旦创建,将由数据库自动管理和维护,能够提高快速访问的效率
优点:
- 保证数据记录的唯一性
- 加快数据检索的速度
- 加快表与表之间的连接速度
- 在使用ORDER BY和GROUT BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间
- 可以在检索数据的过程中优化隐藏器
创建索引:
CREATE
[UNIQUE][CLUSTERED|NONCLUSTERED] '(微型、1个聚集、多个非聚集)
INDEX index name
On
Table_name | view_name
(column_name[1,…,n])
删除索引:
DROP index 表名.索引名
创建架构
CREATE SCHEMA schema_name_clause [ <schema_element> […n]]
<schema_name_clause> ::=
{
Schema_name
|AUTHORIZATION owner_name
}
<schema_element>::=
{
Table_definition | view definition | grant_statement
Revoke_statement | deny_statement
}
聚集索引和非聚集索引
聚集索引确定表中数据的物理顺序。一个表中只能包含一个聚集索引。聚集索引对于那些经常要搜索范围值的列特别有效
在什么情况下使用聚集索引:
- 含有大量非重复值的列
- 使用BETUEEN,>,>=,<或<=返回一个范围值的列
- 被连续访问的列
- 返回大型结果集的查询
- 经常被使用连接或GROUP BY子句的查询访问的列
非聚集索引的数据存储在一个位置,索引存储在另一个位置,索引中的项目按索引值的顺序存储,而表中的信息按另外一种顺序存储
每个表中可以创建的非聚集索引最多为249个
两者之间的重大区别:
数据行不按非聚集索引键的顺序排序和存储
非聚集索引的叶层不包含数据页,相反,叶节点包含索引行。