如果是 SQL Server 2005 或以上版本,可以使用“快照读已提交”(提供语句级的读一致性)或“快照”(提供事务级的读一致性)事务隔离级别。这样,查询将不会请求共享锁,因此不会被其他修改操作阻塞,也不会阻塞其他修改操作。但是 tempdb 数据库会需要更多的存储空间(行版本)。快照读已提交,直接执行 ALTER DATABASE dbname SET READ_COMMITTED_SNAPSHOT ON 语句将正常的读已提交事务隔离级别转换为快照读已提交隔离级别。快照,执行 ALTER DATABASE dbname SET ALLOW_SNAPSHOT_ISOLATION ON 语句开启数据库选项, 执行 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 语句设置会话的事务隔离级别。
一次有上百个这样的查询
如果你还要分组的话,是没有办法提高效率的,可以利用复制功能,将这张表复制到另外一个数据库再统计。
执行 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 语句设置会话的事务隔离级别。
这个可以参考,设置这个级别后,读不会影响写。但对tempdb要求比较高。
这是SQL Server学习ORACLE引进的一个特性。