若天明 发表于 2015-1-16 14:19:22

SQL基本教程及代码优化(五)

每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。游标的感化域
–Local:部分。
–Global:全局。在由毗连实行的任何存储历程或批处置中,都可使用该游标称号。

操纵游标
–界说游标:Declare<CursorName>cursor
–翻开游标:Open<CursorName>
–从了局集前往行:Fetch<CursorName>Into<variable_name>
–封闭游标:Close<CursorName>
–烧毁游标:Deallocate<CursorName>

静态创立游标
Declare@rowcountint
Exec(declarecur_testcursorglobalforselectcount(*)fromstorage_kcaccount)
Opencur_test
Fetchcur_testinto@rowcount
printconvert(varchar(10),@rowcount)
Closecur_test
Deallocatecur_test

利用游标变量
Declare@rowcountint
Declare@cur_testcursor
Set@cur_test=cursorforselectcount(*)fromstorage_kcaccount
Open@cur_test
Fetch@cur_testinto@rowcount
printconvert(varchar(10),@rowcount)
Close@cur_test
Deallocate@cur_test

3.3SQLServer2005表变量
界说表变量
Declare@t_userTable(UserIdint,UserNamevarchar(20))

表变量的长处
–表变量的举动相似于部分变量,有明白界说的感化域,在界说表变量的函数、存储历程或批处置停止时,会主动扫除此变量;
–table范例声明中的CHECK束缚、DEFAULT值和盘算列不克不及挪用用户界说函数;
–在存储过程当中利用table变量与利用一时表比拟,削减了存储历程的从头编译量;
–触及table变量的事件只在table变量更新时代存在。因而削减了table变量对锁定和纪录资本的需求。

表变量的弱点
–包括表变量的查询不会天生并行查询实行企图。特年夜型表变量大概庞大查询中的表变量大概会影响到功能。在这类情形下,请思索改用一时表。

4.视图优化
4.1.对视图的操纵比间接对表操纵要慢,应只管制止在年夜数据量的表上创建视图
4.2.只管不要利用嵌套视图
4.3.在视图中毗连多个表时,会影响功能
4.4.能够思索利用存储历程取代视图检索年夜型表数据
4.5.索引视图(WithSCHEMABINDING)
4.6.分区视图

4.1索引视图
索引视图是对视图创立会萃索引必需满意的前提,也就是说只要索引视图才干创立会萃索引。
–当实行CREATEVIEW语句时,ANSI_NULLS和QUOTED_IDENTIFIER选项必需设置为ON。
–要实行一切CREATETABLE语句以创立视图援用的表,ANSI_NULLS选项必需设置为ON。
–视图不克不及援用任何其他视图,只能援用基表。
–视图援用的一切基表必需与视图位于统一数据库中,而且一切者也与视图不异。
–必需利用SCHEMABINDING选项创立视图。架构绑定将视图绑定到基本基表的架构。
–必需已利用SCHEMABINDING选项创立了视图援用的用户界说函数。
–表和用户界说函数必需由视图中由两部分构成的称号援用。不同意由一部分、三部分和四部分构成的称号援用它们。
–视图中的表达式援用的一切函数必需是断定的。
–假如视图界说利用聚合函数,SELECT列表还必需包含COUNT_BIG(*)。
–用户界说函数的数据会见属性必需为NOSQL,内部会见属性必需是NO。
–大众言语运转时(CLR)函数只能显现在视图的SELECT列表中,而且只能援用不属于会萃索引键的字段。先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。

若天明 发表于 2015-1-18 12:53:11

多加的系统视图和实时系统信息这些工具对DBA挑优非常有帮助,但是感觉粒度还是不太细。

活着的死人 发表于 2015-1-25 23:36:10

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

莫相离 发表于 2015-2-10 01:56:33

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

谁可相欹 发表于 2015-2-28 16:42:21

大家注意一点。如下面的例子:

仓酷云 发表于 2015-3-10 03:50:58

是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。

因胸联盟 发表于 2015-3-17 04:19:59

连做梦都在想页面结构是怎么样的,绝非虚言

海妖 发表于 2015-3-23 20:50:13

我们学到了什么?思考问题的时候从表的角度来思考问
页: [1]
查看完整版本: SQL基本教程及代码优化(五)