SQL Server 1000万件のデータを追加するサンプル
USE kiyo
CREATE TABLE t1
( a int IDENTITY(1, 1) PRIMARY KEY
, b int
, c char(200) DEFAULT 'dummy1'
, d char(200) DEFAULT 'dummy2' )
--↓の処理は32分かかります。1000万件INSERTは32分・・・遅くない?
SET NOCOUNT ON
DECLARE @i int = 1, @b int = 1
WHILE @i <= 10000000
BEGIN
IF @i % 10000 = 0 SET @b = @i
INSERT INTO t1(b) VALUES(@b)
SET @i += 1
END
SET NOCOUNT OFF
--Cool!
SET STATISTICS TIME ON
--Cool!
SET STATISTICS IO ON
--1秒で終わる
SELECT b, MAX(a) FROM t1(nolock)
GROUP BY b
/*
SQL Server の構文解析とコンパイルの時間:
CPU 時間 = 0 ミリ秒、経過時間 = 0 ミリ秒。
(1001 行処理されました)
テーブル 'Worktable'。スキャン回数 0、論理読み取り数 0、物理読み取り数 0、先行読み取り数 0、LOB 論理読み取り数 0、LOB 物理読み取り数 0、LOB 先行読み取り数 0。
テーブル 't1'。スキャン回数 5、論理読み取り数 528279、物理読み取り数 0、先行読み取り数 0、LOB 論理読み取り数 0、LOB 物理読み取り数 0、LOB 先行読み取り数 0。
SQL Server 実行時間: CPU 時間 = 4694 ミリ秒、経過時間 = 1285 ミリ秒。
*/
-- 上位 10万件を確認
--SELECT TOP 100000 * FROM t1 (nolock)
begin tran
--1000万件の更新は1分39秒と遅い
update t1 set c = 'hogehoge', d = 'uriuri'
/*
SQL Server の構文解析とコンパイルの時間:
CPU 時間 = 0 ミリ秒、経過時間 = 2 ミリ秒。
SQL Server の構文解析とコンパイルの時間:
CPU 時間 = 0 ミリ秒、経過時間 = 0 ミリ秒。
SQL Server 実行時間: CPU 時間 = 13744 ミリ秒、経過時間 = 99520 ミリ秒。
(10000000 行処理されました)
*/
SELECT TOP 100000 * FROM t1 (nolock)
--1000万件の更新をロールバックする時間は、
rollback tran
0 件のコメント:
コメントを投稿