我在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