我在Sql Server 2008中有表“TRANSACTION”。大约在1秒内插入了6条记录。 (因为它是财务交易表)因此,在1天内,插入了500.000条记录。 表每周进行分区。SQL Server - 使用GROUP BY查询大型表的性能
该表主要用于多种选择(当然是NOLOCK),插入,更新操作。
您是否认为在以下的查询可能会减慢其他关键选择,插入,更新操作在同一张表上?我认为,即使下面的查询持续时间过长,其他select查询也不会减慢,因为此查询不锁定表。但我无法确定,并向你问道。
请注意,选择列表中的列不在表格中编制索引。
SET @END_DATE = GETDATE()
SET @START_DATE = DATEADD(HOUR, -24, @END_DATE)
SELECT Column1, Column2, Column3, Column4, COUNT(*) FROM [TRANSACTION] WITH(NOLOCK)
WHERE TRANSACTION_DATE BETWEEN @START_DATE AND @END_DATE
GROUP BY Column1, Column2, Column3, Column4
该应用程序是合适的数据库服务器上运行。所以没有CPU或内存问题。我唯一不能确定的是,对于在同一张表上执行select,insert,update的其他查询可能会发生什么风险?任何dealocks或等待问题? – 2012-01-18 12:16:35
NOLOCK发出1个锁,Sch-s - Schema Stability - 只阻止DDL运行该表。检查查询计划,不要低估对IO的影响,而不考虑CPU和内存 - IO往往是大多数系统中的瓶颈 – Andrew 2012-01-18 12:19:21