标签: scan

用于并行索引扫描的 STATISTICS IO

假设有一个带有聚集索引的表

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

7
推荐指数
1
解决办法
416
查看次数

全表扫描次数

我想查看有关表被完全扫描多少次的信息。我希望有类似sys.dm_db_index_usage_stats但表扫描的东西。博客keepitssimleandfast 中描述了一种方法,但我宁愿自服务器启动以来进行所有扫描。

我正在寻找的东西也类似于pg_stat_all_tables.seq_scanPostgreSQL。

sql-server sql-server-2012 scan

4
推荐指数
1
解决办法
1073
查看次数