Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中表的行行为中的sp_table选项_Sql Server - Fatal编程技术网

Sql server SQL Server中表的行行为中的sp_table选项

Sql server SQL Server中表的行行为中的sp_table选项,sql-server,Sql Server,此SQL用于: 设置用户定义表的选项值。sp_tableoption可用于控制具有varchar(max)、nvarchar(max)、varbinary(max)、xml、text、ntext、image或大型用户定义类型列的表的行内行为 什么是在行行为?感谢@Prdp,我做了一些研究 TL;博士如果您的表格有大的(长文本列),并且您没有一直使用选择*,则最好将行中的文本设置为一些不太大的值 exec sp_tableoption N'MyTable', 'text in row', '260

此SQL用于:

设置用户定义表的选项值。sp_tableoption可用于控制具有varchar(max)、nvarchar(max)、varbinary(max)、xml、text、ntext、image或大型用户定义类型列的表的行内行为


什么是在行行为?

感谢@Prdp,我做了一些研究

TL;博士如果您的表格有大的(长文本列),并且您没有一直使用
选择*
,则最好将
行中的文本设置为一些不太大的值

exec sp_tableoption N'MyTable', 'text in row', '260'
在SQL数据中,默认值为8Kb,每页记录数越多,查找速度就会越快(260将允许每页记录数为31条,略低于5倍(log2(31)=~4.95))

旁注:以下SQL将获得表的平均行长:

declare @table nvarchar(128)
declare @sql nvarchar(max)
set @table = '[Schema].Table'
set @sql = 'select AVG((0'
select @sql = @sql + ' + isnull(datalength(' + name + '), 1)' 
        from sys.columns where object_id = object_id(@table)
set @sql = @sql + ') )  from ' + @table 

PRINT @sql -- in case you will fail to set table variable properly ;)
exec sp_executesql @SQL 
实际的可能很长的记录将与该页面中的其他行一起保存,以期望当它像
select*
一样读取时,它将尽可能快。。。。所以,在使用
*
执行所有操作的情况下,应该将此设置设置为大数字~7k

如果行大小达到此字节阈值时有此设置的值,则将移动该值并放置指针-这反过来将增加每页的记录数=加快查找速度

要检查设置为运行以下查询的内容:

select name, text_in_row_limit from
sys.tables
希望这能为您节省一些时间