假设有一个带有聚集索引的表
create table [a_table] ([key] binary(900) unique clustered);
Run Code Online (Sandbox Code Playgroud)
和一些数据
insert into [a_table] ([key])
select top (1000000) row_number() over (order by @@spid)
from sys.all_columns a cross join sys.all_columns b;
Run Code Online (Sandbox Code Playgroud)
通过检查该表的存储统计
select st.index_level, page_count = sum(st.page_count)
from sys.dm_db_index_physical_stats(
db_id(), object_id('a_table'), NULL, NULL, 'DETAILED') st
group by rollup (st.index_level)
order by grouping_id(st.index_level), st.index_level desc;
Run Code Online (Sandbox Code Playgroud)
有人能看见
index_level page_count
----------- ----------
8 1
7 7
6 30
5 121
4 487
3 1952
2 7812
1 31249
0 125000
NULL 166659
Run Code Online (Sandbox Code Playgroud)
该表总共需要 166659 页。
然而表扫描 …
sql-server parallelism database-internals sql-server-2014 scan
我想查看有关表被完全扫描多少次的信息。我希望有类似sys.dm_db_index_usage_stats
但表扫描的东西。博客keepitssimleandfast 中描述了一种方法,但我宁愿自服务器启动以来进行所有扫描。
我正在寻找的东西也类似于pg_stat_all_tables.seq_scan
PostgreSQL。