SQL Serverでクエリ性能を改善する
Dean Smith
Founder, Atamai Analytics

SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations
WHERE Capital IN
(SELECT CityName
FROM Cities)
AND Capital IN
(SELECT CityName
FROM Cities
WHERE Pop2017 > 1000000);
STATISTICS TIME は、クエリの解析・コンパイル・実行に要したミリ秒を報告します。
SQL Server parse and compile time:
CPU time = 16 ms, elapsed time = 21 ms.
(88 rows affected)
SQL Server Execution Times:
CPU time = 390 ms, elapsed time = 382 ms.
SQL Server Execution Times:
CPU time = 390 ms, elapsed time = 382 ms.
SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations
WHERE Capital IN
(SELECT CityName -- 第1サブクエリ
FROM Cities)
AND Capital IN
(SELECT CityName -- 第2サブクエリ
FROM Cities
WHERE Pop2017 > 1000000);
SET STATISTICS TIME ON
SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations
WHERE Capital IN
(SELECT CityName -- 第1サブクエリ
FROM Cities)
AND Capital IN
(SELECT CityName -- 第2サブクエリ
FROM Cities
WHERE Pop2017 > 1000000);
SQL Server 実行時間:
CPU 時間 = 391 ms、経過時間 = 381 ms。
SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations n
WHERE EXISTS
(SELECT 1
FROM Cities c
WHERE n.Capital = c.CityName
AND Pop2017 > 1000000);
SQL Server 実行時間:
CPU 時間 = 0 ms、経過時間 = 2 ms。
SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations n
WHERE EXISTS
(SELECT 1
FROM Cities c
WHERE n.Capital = c.CityName
AND Pop2017 > 1000000);
SET STATISTICS TIME OFF
SQL Server 実行時間:
CPU 時間 = 0 ms、経過時間 = 2 ms。
SELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations
WHERE Capital IN
(SELECT CityName
FROM Cities)
AND Capital IN
(SELECT CityName
FROM Cities
WHERE Pop2017 > 1000000);
SQL Server 実行時間:
CPU 時間 = 391 ms、経過時間 = 381 ms。
EXISTS を使う2番目のクエリSELECT UNStatisticalRegion,
CountryName,
Capital
FROM Nations n
WHERE EXISTS
(SELECT 1
FROM Cities c
WHERE n.Capital = c.CityName
AND Pop2017 > 1000000);
SQL Server 実行時間:
CPU 時間 = 0 ms、経過時間 = 2 ms。
【経過時間】
【CPU 時間】
elapsed time = 2032 ms.
elapsed time = 2060 ms.
elapsed time = 1915 ms.
elapsed time = 4009 ms.
elapsed time = 3511 ms.
Average elapsed time = 2705 ms.
SQL Serverでクエリ性能を改善する