SQL SERVER 索引与视图学习
索引的优点。创建唯一性索引可以确保行数据的唯一性;可以大大提高数据的检索速度;可以加速表与表之间的连接;在使用order by,group by之句时,可以减少查询中分组和排序的时间。
索引的缺点。创建和维护索引需要耗费时间;索引占用物理空间;当对表中的数据进行,删除,更改时,索引也要动态的维护。
创建索引:
1 CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] 2 INDEX <index name> ON <table or view name>(<column name> [ASC|DESC][,...n]) 3 INCLUDE (<column name> [,...n]) 4 [ 5 WITH 6 [PAD_INDEX = {ON | OFF}] 7 [[,] FILLFACTOR = <fillfactor>] 8 [[,] IGNORE_DUR_KEY = {ON | OFF}] 9 [[,] DROP_EXISTING = {ON | OFF}] 10 [[,] STATISTICS_NORECOMPUTE = {ON | OFF}] 11 [[,] SORT_IN_TEMPDB = {ON | OFF}] 12 [[,] ONLINE = {ON | OFF}] 13 [[,] ALLOW_ROW_LOCKS = {ON | OFF}] 14 [[,] ALLOW_PAGE_LOCKS = {ON | OFF}] 15 [[,] MAXDOP = <maxinum degree of parallelism> 16 ] 17 [ON {<filegroup> | <partition scheme name> | DEFAULT}]
eg.
USE test1
GO
IF EXISTS(SELECT * FROM SYSINDEXES WHERE NAME='ceshi_index')
DROP INDEX ceshi_index
Create unique nonclustered index ceshi_index
ON orders(customerID)
With FILLFACTOR = 30
GO
修改索引
1 Alter index ceshi_index on ceshi Rebuild 2 With (FILLFACTOR=30,IGNORE_DUP_KEY=ON)
视图,如何创建视图
Create VIEW VIEW_NAME
AS
SELECT_STATEMENT
[WITH CHECK OPTION]
需要注意的是,在视图的定义中,select子句中不能包含下列的内容:
compute 或 compute by子句
order by 子句 ,除非select 子句中有top子句
into 关键字
option 子句
引用临时表或表变量
视图中修改数据需要注意的事项
1、可以修改由2个或者2个以上的基表得到的视图,但是每一次修改的数据只能影响一个基表。
2、某些列不能修改,这些不能修改的列包括通过计算得到的列,有内置函数的列以及有合计函数的列。
3、如果影响到表中没有默认值得列,可能产生错误。如,在插入数据时。
4、在定义视图时指定了WITH CHECK OPTION 选项,则强制按照select语句标准执行。