SQL
ハンズオン#2 — Clustered Index Scanが出るケース
出典: SQL Server 実行計画の読み方 — Estimated vs Actual で業務SE が最初に見る5箇所 — ハンズオン#2 — Clustered Index Scanが出るケース
IF OBJECT_ID('dbo.tmp_products','U')IS NOT NULL DROP TABLE dbo.tmp_products;
CREATE TABLE dbo.tmp_products (id INT IDENTITY PRIMARY KEY, name NVARCHAR(50), price INT);
INSERT INTO dbo.tmp_products (name, price)VALUES
(N'apple', 100),(N'banana', 200),(N'cherry', 300),(N'durian', 400);
SET SHOWPLAN_TEXT ON;
GO
SELECT * FROM dbo.tmp_products WHERE name = N'apple';
GO
SET SHOWPLAN_TEXT OFF;
GO
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「ハンズオン#2 — Clustered Index Scanが出るケース」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件SET SHOWPLAN_TEXT ON; GO SELECT * FROM dbo.tmp_orders WHERE customer_id = 1; GO
▶ 実行可
SET SHOWPLAN_TEXTで実行計画を取る
#73565946edca
--準備:通常テーブル+インデックス+ 1万件投入+統計更新 IF OBJECT_ID('dbo.tmp_orders','U')IS NOT NULL DROP TABLE dbo.tmp_orders; CREATE TABLE dbo.tmp_orders (id INT IDENTITY PRIMARY KEY, customer_id INT, amount INT); CREATE INDEX IX_customer ON dbo.tmp_orders(customer_id);
▶ 実行可
ハンズオン#1 — Index Seekが出るケース
#862ed5c3d05c
|--Nested Loops(Inner Join, OUTER REFERENCES:([id])) |--Index Seek(OBJECT:([IX_customer]), SEEK:([customer_id]=(1))) |--Clustered Index Seek(OBJECT:([PK__tmp_orders]), SEEK:([id]=[id])LOOKUP)未収録
ハンズオン#1 — Index Seekが出るケース
#baf135028100
SET STATISTICS PROFILE ON; SELECT * FROM dbo.tmp_orders WHERE customer_id = 1; SET STATISTICS PROFILE OFF;
▶ 実行可
② Estimated rowsとActual rowsの乖離
#2094ae3368eb
-- ✗ Index効かない WHERE CONVERT(VARCHAR, created_at, 23)= '2026-05-15' -- ✓ Index効く未収録
④ WHERE列を関数で潰してる
#ba63e096cd59
