4

SQL Server 2008 のデータベースで行う操作のいくつかのメカニズムを調整しようとしています。

問題の最善のアプローチを選択するために をよく使用SET STATISTICS IO ONしますが、長い一連のステートメントを別のステートメントと比較するときはあまり便利ではありません。

たとえば、次のような T-SQL ステートメントに必要な読み取り/書き込み全体をどのように知ることができますか。

WHILE @i < 1000
BEGIN
 <some statements>
 SET @I = @I + 1
END

助けてくれてありがとう(私の下手な英語を許して)。

4

2 に答える 2

0

の代わりに動的管理ビューsys.dm_exec_query_statsSET STATISTICS IOを使用するのはどうですか?

IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Read_and_Write') 
  DROP TABLE Read_and_Write

CREATE TABLE Read_and_Write (
  RowID INT NOT NULL,
  RowValue CHAR(2000)
) 

CHECKPOINT
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE 
GO

INSERT Read_and_Write (RowID, RowValue) 
SELECT TOP 10000
  ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
  'X'
FROM sys.all_objects s1 CROSS JOIN sys.all_objects s2 

SELECT COUNT(*)
FROM Read_and_Write
WHERE RowID <= 500

SELECT 
  cast( (select [processing-instruction(q)] = 
  case when [sql_handle] is null then ''
       else (substring(s.text,(q.statement_start_offset + 2) / 2,
     (case when q.statement_end_offset = -1 
           then len(convert(nvarchar(max),s.text)) * 2
           else q.statement_end_offset
      end - q.statement_start_offset) / 2))
  end for xml path('') ) as xml) AS sql_text,
  last_worker_time,
  last_elapsed_time,
  last_logical_reads,
  last_physical_reads,
  last_logical_writes,
  last_rows,
  p.query_plan
FROM sys.dm_exec_query_stats q
CROSS APPLY sys.dm_exec_sql_text([sql_handle]) s
CROSS APPLY sys.dm_exec_query_plan ([plan_handle]) p
于 2012-12-27T22:21:23.563 に答える