统计SQL2005中数据库中的每张表的记录数

本文介绍了一种使用SQL查询优化技术来获取用户表的最大记录数的方法,适用于SQL Server 2005及以上版本。通过将系统索引与对象表连接,并筛选类型为'U'的数据,我们可以有效地计算并展示表中最大的记录数量。

刚刚需要用到的,记录一下,SQL05以上管用,2000没试过。。。

select b.[name] 表名,max(a.rowcnt) 记录数
from sysindexes a
join sys.objects b on b.object_id=a.id
where b.type='U'
group by b.[name]
 
SQL Server中,统计数据库每张的访问次数可以通过多种方法实现,具体取决于你的需求和数据可用的信息。以下是几种常见的方法: ### 方法一:使用动态管理视图 (DMV) SQL Server 提供了动态管理视图 (DMV),可以通过查询这些视图来获取数据库的访问统计信息。例如,可以使用 `sys.dm_db_index_usage_stats` 视图来获取的访问次数。 ```sql SELECT OBJECT_NAME(s.object_id) AS TableName, s.user_seeks + s.user_scans + s.user_lookups AS AccessCount FROM sys.dm_db_index_usage_stats s INNER JOIN sys.objects o ON s.object_id = o.object_id WHERE s.database_id = DB_ID() AND o.type = 'U' ORDER BY AccessCount DESC; ``` ### 方法二:使用扩展事件 (Extended Events) 如果需要更详细的访问统计信息,可以使用扩展事件来捕获 SQL 查询并分析的访问情况。 1. 创建一个扩展事件会话: ```sql CREATE EVENT SESSION [TrackTableAccess] ON SERVER ADD EVENT sqlserver.sql_statement_completed( ACTION(sqlserver.database_id, sqlserver.session_id, sqlserver.sql_text) WHERE (sqlserver.database_id = DB_ID())) ADD TARGET package0.asynchronous_file_target(SET filename='C:\Temp\TableAccess.xel', metadatafile='C:\Temp\TableAccess.xem'); ``` 2. 启动扩展事件会话: ```sql ALTER EVENT SESSION [TrackTableAccess] ON SERVER STATE = START; ``` 3. 分析捕获的数据: 捕获的数据需要使用 SQL Server Management Studio (SSMS) 或其他工具进行分析,以统计每张的访问次数。 ### 方法三:使用 SQL Server Profiler SQL Server Profiler 可以用来捕获 SQL 查询并分析的访问情况。 1. 打开 SQL Server Profiler 并创建一个新的跟踪。 2. 在跟踪属性中选择要捕获的事件,例如 `SQL:BatchCompleted` 和 `SQL:BatchStarting`。 3. 运行跟踪并捕获查询。 4. 分析捕获的数据以统计每张的访问次数。 ### 方法四:使用自定义日志记录 如果需要更灵活的统计方式,可以创建触发器来记录的访问情况。 1. 为每张创建一个 INSERT 触发器,记录访问信息到一个日志。 ```sql CREATE TABLE TableAccessLog ( LogID INT IDENTITY(1,1) PRIMARY KEY, TableName NVARCHAR(128), AccessTime DATETIME ); CREATE TRIGGER trg_TrackTableAccess ON YourTable AFTER INSERT, UPDATE, DELETE AS BEGIN INSERT INTO TableAccessLog (TableName, AccessTime) VALUES ('YourTable', GETDATE()); END; ``` 2. 定期查询日志统计每张的访问次数。 ```sql SELECT TableName, COUNT(*) AS AccessCount FROM TableAccessLog GROUP BY TableName ORDER BY AccessCount DESC; ``` 通过以上方法,你可以根据具体需求选择合适的方式来统计 SQL Server 数据库每张的访问次数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值