SQL
② Estimated rowsとActual rowsの乖離
出典: SQL Server 実行計画の読み方 — Estimated vs Actual で業務SE が最初に見る5箇所 — 最初に見る5箇所 / ② Estimated rowsとActual rowsの乖離
SET STATISTICS PROFILE ON;
SELECT * FROM dbo.tmp_orders WHERE customer_id = 1;
SET STATISTICS PROFILE OFF;
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「最初に見る5箇所 / ② Estimated rowsとActual rowsの乖離」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
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
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);未収録
ハンズオン#2 — Clustered Index Scanが出るケース
#6a3025feb9a9
-- ✗ Index効かない WHERE CONVERT(VARCHAR, created_at, 23)= '2026-05-15' -- ✓ Index効く未収録
④ WHERE列を関数で潰してる
#ba63e096cd59
