关于SQL

set nocount on 作用

阻止在结果集中返回显示受t-sql语句影响的行计数信息

set nocount on 不返回计数,set nocount off 返回计数

即使当set nocount on 时也更新@@rowcount

当set nocount on 时将不向客户端发送存储过程每个语句的done_in_proc 消息,如果存储过程中包含一些并不返回实际数剧的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;

set nocount 指定的设置时在执行或运行时候生效,分析时候不生效

 

create table [dbo].[xima_ptypepath]
(
[ptypepathid] [int] identity(1,1) not null,
[ptypeid] [varchar](50) null,
[ptypepathname] [varchar](max) null,
[ptypepathtypeid] [varchar](max) null,
constraint [pk_xima_ptypepath] primary key clustered 
(
[ptypepathid] asc
)
with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary]
) on [primary]

pad_index = { on | off }

如果为 on,则 fillfactor 指定的可用空间百分比将应用于该索引的中间级别页。如果未指定 off 或 fillfactor 值,则考虑到中间级别页的键集,将中间级别页填充到一个近似容量,以留出足够的空间来容纳至少一个索引的最大行。默认值为 off。

fillfactor = fillfactor

指定一个百分比,指示在创建或更改索引期间,数据库引擎对各索引页的叶级填充的程度。fillfactor 必须为介于 1 至 100 之间的整数值。默认值为 0。填充因子的值 0 和 100 在所有方面都是相同的。

statistics_norecompute = { on | off }

如果为 on,则过期的索引统计信息不会自动重新计算。如果为 off,则启用自动统计信息更新。默认值为 off。

ignore_dup_key = { on | off }

指定在插入操作尝试向唯一索引插入重复键值时的错误响应。ignore_dup_key 选项仅适用于创建或重新生成索引后发生的插入操作。当执行 create index、alter index 或 update 时,该选项无效。默认值为 off。

on 向唯一索引插入重复键值时将出现警告消息。只有违反唯一性约束的行才会失败。

off 向唯一索引插入重复键值时将出现错误消息。整个 insert 操作将被回滚。

对于对视图创建的索引、非唯一索引、xml 索引、空间索引以及筛选的索引,ignore_dup_key 不能设置为 on。

若要查看 ignore_dup_key,请使用 sys.indexes。

在向后兼容的语法中,with ignore_dup_key 等效于 with ignore_dup_key = on。

allow_row_locks = { on | off }

如果为 on,则访问索引时允许使用行锁。数据库引擎确定何时使用行锁。如果为 off,则不使用行锁。默认值为 on。

allow_page_locks = { on | off }

如果为 on,则访问索引时允许使用页锁。数据库引擎确定何时使用页锁。如果为 off,则不使用页锁。默认值为 on。

on { filegroup | default }

用来指定存储表的文件组。如果指定filegroup,则表将存储在指定的文件组中,数据库中必须存在该文件组。如果指定default,或者根本未指定on参数,则表存储在默认文件组中。(default并不是关键字,default是默认文件组的标识符并需对其进行

定界,如on "default"、on [default])

on [primary]表示表是建立在主文件组上。primary表示主文件组。如果没有默认文件组,则主文件组是默认文件组,on [primary]也可以省略掉了。

主文件组(primary)

用户定义文件组默认文件组同为文件组的一种类型

其包含主要数据文件和任何没有明确指派给其他文件组的其他文件。系统表的所以页均分配在主文件组

 

set ansi_padding on
go
print 'testing with ansi_padding on'
gocreate table t1 
(charcol char(16) null, 
varcharcol varchar(16) null, 
varbinarycol varbinary(8))
go
insert into t1 values ('no blanks', 'no blanks ', 0x00ee)
insert into t1 values ('trailing blank', 'trailing blank ', 0x00ee00)
​
select 'char'='>' + charcol + '<', 'varchar'='>' + varcharcol + '<',
varbinarycol
from t1
goset ansi_padding off
go
print 'testing with ansi_padding off'
gocreate table t2 
(charcol char(16) null, 
varcharcol varchar(16) null, 
varbinarycol varbinary(8))
go
insert into t2 values ('no blanks', 'no blanks', 0x00ee)
insert into t2 values ('trailing blank', 'trailing blank', 0x00ee00)
​
select 'char'='>' + charcol + '<', 'varchar'='>' + varcharcol + '<',
varbinarycol
from t2
godrop table t1
drop table t2
go

set ansi_padding off

当设置为 on 时,不剪裁字符值中插入到 varchar 列的尾随空格和二进制值中插入到 varbinary 列的尾随零。不将值按列的长度进行填充。当设置为 off 时,剪裁 varchar 列的尾随空格和 varbinary 列的尾随零。该设置只影响新列的定义。 

set ansi_padding 为 on 时,将允许空值的 char(n) 和 binary(n) 列填充到列长,而当 set ansi_padding 为 off 时,将剪裁尾随空格和零。始终将不允许空值的 char(n) 和 binary(n) 列填充到列长。 

 

 

 

 

posted @ 2019-09-09 10:00  智者见智  阅读(553)  评论(0编辑  收藏  举报