1. Table数据类型
char, nchar, ntext, nvarchar,text,varchar等字符类型,有定长和非定长的区别,有最大长度的区别。一个表最多支持1024列,每行的总字节不能超过8060字节。每个数据页是8k。但是SQL Server通过"Over-Flow"的机制支持超越8060的约束。
2. 计算列
计算列的取值来源于其他列值的计算。可以通过PERSISTED设定为物理存储列,也可以设定为只是逻辑计算列。
AvgSharesPerShareholder AS (SharesOutStanding/Shareholders) PERSISTED
3. 查看表信息
通过系统存储过程sp_help查看特定表相关的信息。
4. 代理键
没有业务意义,如用IDENTITY类型的列实现。通过DBCC CHECKIDENT查看当前代理键的种子值。
5. 约束
分为Unique和Default, Check约束。
6. 临时表
和普通的表没有什么区别,只是自动存储在tempdb中。临时表的实用场景:游标的替代方法;对于复杂的连接查询,创建临时表存储增量的结果集;临时存储重用数据。两种类型的临时表:本地临时表和全部临时表。本地临时表前面有“#”当作前缀,全局临时表前面有“##”。
本地临时表只能被当前的连接所实用。内部有一个GUID名称,因此不同连接的临时表的名称是可以雷同的。 使用DROP删除临时表,或者当连接中断时,系统自动删除本地临时表。全局临时表可以被所有具有权限的连接用户使用。使用Drop Table来删除全局临时表。由于临时表涉及到tempdb,使用不当容易造成性能问题。
7. 表变量
微软推荐使用表变量来代替临时表。表变量和正常的表以及临时表不同的是,它不能设置索引和外键约束。它的优点是:有明确的使用域,锁时间短,在存储过程中需要较少的编译。但是,对于数据量大时,不推荐使用表变量。
8. 大数据量表的管理
采用Partitioning和FileGroup来提高效率。这些功能只在企业版本中才有的功能。分区是把记录按照一定的规则放入特定的地方,但是逻辑上还是一个统一的对象。把某些特定的分区放入特定的FileGroup。
采用$PARTITION函数来确定记录位于哪个分区内。在2005中,新增加了中在不同表间移植分区的功能,通过ALTER TABLE... SWITCH命令。
9. 查看索引元数据
系统存储过程sp_helpindex。
10. Disable索引
Alter Index实现。但是索引的定义在系统表中仍然是存在的,只是索引将不可用。对于表上的非聚簇索引,索引数据从数据库中删除;对于聚簇索引,索引信息仍然保存。Reenable索引,使用Create Index, Alter Index Rebuild来实现。
11. Drop索引
索引定义也会被删除。当Drop掉一个包含非聚簇索引的聚簇索引时,会导致非聚簇索引Rebuilt。
12. 索引Build
索引创建可能是一件耗费事件和资源的操作。企业版中,支持使用SORT_IN_TEMPDB命令时创建过程在temp数据库中完成,提高数据库的并发效率。同时通过ONLINE命令支持在索引创建过程中允许用户访问。
13. 索引选项
PAD_INDEX,FILLFACTOR,索引页面的填充率。
14. 索引管理
可以在FileGroup上创建索引,可以进行非聚簇索引分区。
15. 视图的类型
SQL Server 2005中支持:一般视图,索引视图,分布式分区视图
16. 一般视图
一般视图本质上是存储过的查询,因此需要像一般查询一样进行优化。避免视图定义中的嵌套。尽量使用存储过程代替视图,因为存储过程能达到性能提升的目的,而视图的执行计划是每次编译的无法重用。
17. 查询视图定义
通过sys.sql_modules进行查询,也可以通过sys.views, sys.schemas进行连接查询得到视图定义。
18. 刷新视图定义
当视图依赖的对象改变了,那么视图元信息就过期了。使用sp_refreshview去刷新视图定义。
19. 视图加密
为了防止客户端对sql进行反向工程,可以对视图或者存储过程的定义进行加密。这样视图的定义就不可见了。
20. 索引视图
当在视图上创建索引后,基础表上的物理数据并没有受影响,它们是独立的对象。索引视图可以在任意版本的数据库服务器上创建,但是只有在企业版本中,引擎才能自动使用视图上的索引,否则需要采用NOEXPAND选项来指明。索引视图适合在不经常更新的数据上。
21. 分布式索引视图
允许把数据分布在多个数据库实例上。
22.聚集函数,数学函数,字符串函数,处理NULL的函数,日期函数,CAST, CONVERT数据类型转换函数。
23. Ranking函数
SQL Servr中的新特性,比如实现取出结果集中某部分子集。
24. 系统相关的函数
或者称为系统变量,一般以@@为前缀。
25. Waitfor命令
延迟T-SQL的执行,等待某种输入或者超时。
26. 游标
T-SQL是一种面向结果集的语言。游标是一行一行的读取记录,会影响性能。只有当while,子查询,临时表,表变量没有办法解决问题的时候,才考虑使用游标。游标有不同的类型,有本地和全局的区别。创建游标时,包含各种选项代表不同功能的游标。