Sql server SQL Server中表的行行为中的sp_table选项
此SQL用于: 设置用户定义表的选项值。sp_tableoption可用于控制具有varchar(max)、nvarchar(max)、varbinary(max)、xml、text、ntext、image或大型用户定义类型列的表的行内行为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
什么是在行行为?感谢@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
希望这能为您节省一些时间