相关疑难解决方法(0)

我可以提高膨胀系统表的性能吗?

背景:
我有许多带有大量 VIEW 和大量 SYNONYM 的数据库。例如,一个数据库有超过 10k 的 VIEW's 和 2+ 百万的 SYNONYM's。

一般问题:
涉及sys.objects(和一般系统表)的查询往往很慢。涉及sys.synonyms的查询是冰川。我想知道我可以做些什么来提高性能。

具体示例
此命令由第三方工具运行。它在应用程序和 SSMS 中都很慢:

exec sp_tables_rowset;2 NULL,NULL
Run Code Online (Sandbox Code Playgroud)

我的问题
我怎样才能让它运行得更快?

我试过的
如果SET STATISTICS IO ON我得到这个输出:

(2201538 行受影响)
表“sysobjrdb”。扫描计数 1,逻辑读取 28,物理读取 0,预读读取 0,lob 逻辑读取 0,lob 物理读取 0,lob
预读读取 0。表 'sysschobjs'。扫描计数1,逻辑读53926,物理读0,预读0,lob逻辑读0,lob物理读0,lob预读0。

我已经能够更新底层系统表的统计信息。这在我的 SQL 2008 R2 或更新的环境中有效:

UPDATE STATISTICS sys.sysobjrdb WITH FULLSCAN
UPDATE STATISTICS sys.sysschobjs WITH FULLSCAN
Run Code Online (Sandbox Code Playgroud)

我还能够执行索引维护。这适用于我的 SQL 2012 或更新的环境。例如运行sp_help 'sys.sysschobjs'标识表上的索引,然后我从那里创建并运行这些命令:

ALTER INDEX clst ON sys.sysschobjs REORGANIZE
ALTER …
Run Code Online (Sandbox Code Playgroud)

sql-server system-tables

12
推荐指数
1
解决办法
792
查看次数

标签 统计

sql-server ×1

system-tables ×1