10 个解决方案
#1
什么统计信息。软件里的么
#2
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息是否由用户显示创建
from
sys.stats
inner join
sysobjects o
on
s.object_id=o.id
where
o.name='表名'
go
--查看统计信息中列的信息
select
o.name,--表名
s.name,--统计信息的名称
sc.stats_column_id,
c.name---列名
from
sys.stats_columns sc
inner join
sysobjects o
on
sc.object_id=o.id
inner join
sys.stats s
on
sc.stats_id=s.stats_id and sc.object_id=s.object_id
inner join
sys.columns c
on
sc.column_id=c.column_id and sc.object_id=c.object_id
where
o.name='表名'
--查看统计信息的明细信息
dbcc show_statistics
--查看索引自动创建的统计信息
exec sp_autostats '对象名'
--关闭自动生成统计信息的数据库选项
alter datebase 数据库名 set auto_create_statistics off
--创建统计信息
create statistics 统计信息名称 on 表名(列名)
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
go
解释一下上面的参数:
fullscan:指定对表或视图中所有的行收集统计信息
sample number{percent|rows}:指定随机抽样应读取的数据行数或者百分比 sample选项不能与fullscan选项同时使用
norecompute:指定数据库引擎不自动重新计算统计信息
--计算随机抽样统计信息
create statistics 统计信息名称 on 表名(列名)
with sample 5 percent---创建统计信息,按5%计算随机抽样统计信息
go
--创建统计信息
exec sp_createstats--参数自己去查下帮助,在这里不一一列举
--修改统计信息
update statistics 表名|视图名
索引名|统计信息名,索引名|统计信息名,.....
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
---参数与create statistics 语句相似,下面介绍几种常用应用
1.更新指定表的所有统计信息
update statistics 表名
2.更新指定表的单个索引的统计信息
update statistics 表名 索引名
3.对表进行全面扫描,更新统计信息
update statistics 表名(列名) with fullscan
#3
没明白。
#4
alter database test set auto_update_statistics on
就是执行完上面语句,把库test统计信息更新选项设为自动后。
数据库会在什么时候、什么情况自动更新统计信息呢??
就是执行完上面语句,把库test统计信息更新选项设为自动后。
数据库会在什么时候、什么情况自动更新统计信息呢??
#5
关注,没用过
#6
[Quote=引用 2 楼 fredrickhu 的回复:]
SQL code
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息……
[/Quote
alter database test set auto_update_statistics on 执行这个之后
怎么知道数据库什么时候会自动更新统计信息呢??
SQL code
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息……
[/Quote
alter database test set auto_update_statistics on 执行这个之后
怎么知道数据库什么时候会自动更新统计信息呢??
#7
数据库 ---右键---属性---选项 中有是否启用自动更新 统计项。自己选就可以了
#8
右键->属性->选项
#9
统计信息更新的时机,
1.数据库的AUTO_CREATE_STATISTICS=ON时,自动更新.
2.手动更新1:
update statistics [表名] with FULLSCAN --全表扫描.
update statistics [表名] with SAMPLE [百分比] PERCENT --按百分比抽样更新统计.
update statistics [表名] with SAMPLE [行数] ROWS --按指定行数抽样更新统计.
参考 http://technet.microsoft.com/zh-cn/library/ms187348.aspx
3.手动更新2: sp_updatestats --全部更新,默认选择抽样更新.
1.数据库的AUTO_CREATE_STATISTICS=ON时,自动更新.
2.手动更新1:
update statistics [表名] with FULLSCAN --全表扫描.
update statistics [表名] with SAMPLE [百分比] PERCENT --按百分比抽样更新统计.
update statistics [表名] with SAMPLE [行数] ROWS --按指定行数抽样更新统计.
参考 http://technet.microsoft.com/zh-cn/library/ms187348.aspx
3.手动更新2: sp_updatestats --全部更新,默认选择抽样更新.
#10
其实我是想问,设为自动更新后。。sql server 会在什么时候更新。。 我在网上查了查,有的说是表中插入的数据一定数量时,会自动更新。。。 我还是接贴吧!~
#1
什么统计信息。软件里的么
#2
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息是否由用户显示创建
from
sys.stats
inner join
sysobjects o
on
s.object_id=o.id
where
o.name='表名'
go
--查看统计信息中列的信息
select
o.name,--表名
s.name,--统计信息的名称
sc.stats_column_id,
c.name---列名
from
sys.stats_columns sc
inner join
sysobjects o
on
sc.object_id=o.id
inner join
sys.stats s
on
sc.stats_id=s.stats_id and sc.object_id=s.object_id
inner join
sys.columns c
on
sc.column_id=c.column_id and sc.object_id=c.object_id
where
o.name='表名'
--查看统计信息的明细信息
dbcc show_statistics
--查看索引自动创建的统计信息
exec sp_autostats '对象名'
--关闭自动生成统计信息的数据库选项
alter datebase 数据库名 set auto_create_statistics off
--创建统计信息
create statistics 统计信息名称 on 表名(列名)
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
go
解释一下上面的参数:
fullscan:指定对表或视图中所有的行收集统计信息
sample number{percent|rows}:指定随机抽样应读取的数据行数或者百分比 sample选项不能与fullscan选项同时使用
norecompute:指定数据库引擎不自动重新计算统计信息
--计算随机抽样统计信息
create statistics 统计信息名称 on 表名(列名)
with sample 5 percent---创建统计信息,按5%计算随机抽样统计信息
go
--创建统计信息
exec sp_createstats--参数自己去查下帮助,在这里不一一列举
--修改统计信息
update statistics 表名|视图名
索引名|统计信息名,索引名|统计信息名,.....
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
---参数与create statistics 语句相似,下面介绍几种常用应用
1.更新指定表的所有统计信息
update statistics 表名
2.更新指定表的单个索引的统计信息
update statistics 表名 索引名
3.对表进行全面扫描,更新统计信息
update statistics 表名(列名) with fullscan
#3
没明白。
#4
alter database test set auto_update_statistics on
就是执行完上面语句,把库test统计信息更新选项设为自动后。
数据库会在什么时候、什么情况自动更新统计信息呢??
就是执行完上面语句,把库test统计信息更新选项设为自动后。
数据库会在什么时候、什么情况自动更新统计信息呢??
#5
关注,没用过
#6
[Quote=引用 2 楼 fredrickhu 的回复:]
SQL code
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息……
[/Quote
alter database test set auto_update_statistics on 执行这个之后
怎么知道数据库什么时候会自动更新统计信息呢??
SQL code
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats
--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
o.name,--表名
s.name,--统计信息的名称
auto_created,--统计信息是否由查询处理器自动创建
user_created--统计信息……
[/Quote
alter database test set auto_update_statistics on 执行这个之后
怎么知道数据库什么时候会自动更新统计信息呢??
#7
数据库 ---右键---属性---选项 中有是否启用自动更新 统计项。自己选就可以了
#8
右键->属性->选项
#9
统计信息更新的时机,
1.数据库的AUTO_CREATE_STATISTICS=ON时,自动更新.
2.手动更新1:
update statistics [表名] with FULLSCAN --全表扫描.
update statistics [表名] with SAMPLE [百分比] PERCENT --按百分比抽样更新统计.
update statistics [表名] with SAMPLE [行数] ROWS --按指定行数抽样更新统计.
参考 http://technet.microsoft.com/zh-cn/library/ms187348.aspx
3.手动更新2: sp_updatestats --全部更新,默认选择抽样更新.
1.数据库的AUTO_CREATE_STATISTICS=ON时,自动更新.
2.手动更新1:
update statistics [表名] with FULLSCAN --全表扫描.
update statistics [表名] with SAMPLE [百分比] PERCENT --按百分比抽样更新统计.
update statistics [表名] with SAMPLE [行数] ROWS --按指定行数抽样更新统计.
参考 http://technet.microsoft.com/zh-cn/library/ms187348.aspx
3.手动更新2: sp_updatestats --全部更新,默认选择抽样更新.
#10
其实我是想问,设为自动更新后。。sql server 会在什么时候更新。。 我在网上查了查,有的说是表中插入的数据一定数量时,会自动更新。。。 我还是接贴吧!~