Contents

1
2 Sub Query 伎
3 Sub Query襯 Join朱 覦蠑瑚鍵
4 蟯 觚 貎朱Μ


1 #

一危磯ゼ 郁屋 襦 覲企ゼ 襷 覦覯 れ讌襷 螳 朱企伎 企手 覲 蟆 Join企. 覿覿 Sub Query Join朱 れ [1] . 蠏碁 螳讌 觚貎朱Μ襯 朱 ′語るゼ 蟆曙郁 襷 . 觚貎朱Μ襯 譴 蟆 覃語深襴螳 襾殊 覃 觚貎朱Μ螳 襾殊 企. 企 蟆 襾殊 讌襯 蟆一 蟆 糾覲伎 焔 SQL覓語 磯殊 ′語 蟆暑螳 れ. 企 覦朱 一危磯ゼ 郁屋 蟆語 焔レ レ 覩語.

2 Sub Query 伎 #

れ 襯 覲伎. 朱 蟆曙磯.
SELECT *
FROM Product
WHERE ProductID IN
    (SELECT ProductID
     FROM SalesOrderDetail
     WHERE SalesOrderID > 10000)
--'Product' 企. れ  139, 朱Μ 所鍵  299, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.


sub_query01.jpg
sub_query02.jpg

伎 貎朱Μ襯 所 覲貅覲伎. 所襷 覲貅磯磯 襷 覲螳 殊企.
SELECT *
FROM Product
WHERE ProductID IN
    (SELECT ProductID + '' --蠍
     FROM SalesOrderDetail
     WHERE SalesOrderID > 10000)
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'Product' 企. れ  1, 朱Μ 所鍵  29, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query03.jpg
sub_query04.jpg

Product 企 朱Μ 所鍵 螳 29 蟆 Product 企 覈 29 伎 れ願 蠍 覓語 蟆企. 語 企慨.
-999 
SELECT * FROM Product 
--'Product' 企. れ  1, 朱Μ 所鍵  29, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
 
--60452
SELECT ProductID + '' FROM SalesOrderDetail  WHERE SalesOrderID > 10000 
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

貎朱Μ 覯讌 貎朱Μ螳 I/O螳 蟆 覲 . 豌伎 觜 觜蟲 覲 覯讌 貎朱Μ螳 襴る 蟆 . 蠏碁 豌 覯讌 貎朱Μ ろ螻 覲企 Stream Aggregate 一一螳 . 一一 觜蟲 ProductID Distinct 襯 覲伎ロ蠍 伎 焔 蟆企. 讀, 螳 IN 一一 螳 觜蟲譟郁唄 蠍 覓語 讌 一一朱 Distinct襯 覲伎ロ 蟆螻 螳.

sub_query05.jpg

讀, WHERE 譟郁唄 れ螻 螳 覦覲給 蟆螻 螳.
SELECT *
FROM Product
WHERE ProductID = 8 OR ProductID = 8 OR ProductID = 8 OR ProductID = 8 
OR ProductID = 9 OR ProductID = 9 OR ProductID = 9 OR ProductID = 9 

願 螳 譟郁唄 螻伎 覦覲牛蟆 覩襦 願 Distinct 螳螻 螳. 蠏碁覩襦 Stream Aggregate螳 螳 狩蟆 襷 蟆企.

3 Sub Query襯 Join朱 覦蠑瑚鍵 #

觚貎朱Μ 譟一語朱 覦蠖 り . 貎朱Μ襯 譟一語朱 覦蠑語企慨.
SELECT A.*
FROM Product A INNER JOIN SalesOrderDetail B
ON A.ProductID = B.ProductID + ''
AND B.SalesOrderID > 10000
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'Product' 企. れ  1, 朱Μ 所鍵  29, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query06.jpg

ろ螻螻 朱Μ 所鍵 螳. 蠏碁 蟆郁骸螳 螳螳? 蟆郁骸螳 豌蟆 襷 蟆企. 覓伎 覈視蟾? 旧 企 襷. 觚貎朱Μ 蟆郁骸螳 60452 企襦 1:M 譟一語 M襷 蟆郁骸螳 る 蟆 轟壱. 蠏碁 Distinct 覃 讌 螻 螳 DISTINCT襯 SELECT 覿 l.

SELECT DISTINCT A.*
FROM Product A INNER JOIN SalesOrderDetail B
ON A.ProductID = B.ProductID + ''
AND B.SalesOrderID > 10000
--'Product' 企. れ  139, 朱Μ 所鍵  299, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query07.jpg

ろ螻 磯Μ螳 豌 覯讌 覺る 貎朱Μ ろ螻朱 覲 覯碁. 朱 豌 蟆郁骸襯 襴危 螳 る 蟇碁Υ 蟆企 觜螳. MSSQL Server 譟一語 蠍 Stream Aggregate襦 譴螳 蟆郁骸襯 譴覯碁. 覯 . れ襦 貎朱Μ れ螻 螳 SQL 燕 蟆螻 螳.

SELECT A.*
FROM Product A INNER JOIN (SELECT ProductID 
                             FROM SalesOrderDetail
                             WHERE SalesOrderID > 10000
                             GROUP BY ProductID) B
ON A.ProductID  = B.ProductID

蠏碁 磯Μ螳 燕 覯讌 觚貎朱Μ 蟆郁骸螳 れ . 蠏碁る 牛磯伎 觜 螻一 朱 譯手鍵 A讓曙 Suppressing覃 A讓暑 曙伎 螻, 蠏碁蟆 覃 蟆郁骸螳 讌 郁屋 襷殊 139覯 れ朱 曙伎 る 蟆郁骸螳 .
-- B 讌
SELECT ProductID 
FROM SalesOrderDetail
WHERE SalesOrderID > 10000
GROUP BY ProductID

SELECT A.*
FROM Product A INNER JOIN (SELECT ProductID 
                             FROM SalesOrderDetail
                             WHERE SalesOrderID > 10000
                             GROUP BY ProductID) B
ON A.ProductID + '' = B.ProductID
OPTION (FORCE ORDER, LOOP JOIN)
--'Worktable' 企. れ  998, 朱Μ 所鍵  1139, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'Product' 企. れ  1, 朱Μ 所鍵  29, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query08.jpg

SELECT 139 * 999
--138861

I/O 覲企 B 讌 覯 れ 螻, Worktable 998覯 れ 朱襦 Product 豐 蟇伎 999 覿. MSSQL Server 牛磯伎 B 讌 999覯 れ 碁企襦 Tempdb 企 襷れ ロ . 願 Nested Loop Join 伎 覩襦 一危磯ゼ 螻 覦碁讌 蟆 蠍 企. 襷 螳 企 螻伎 れる れ Lock 蟇碁 るジ 貎朱Μ レ 譴 蠍 覓語企. 麹 觜企.

覓朱 企 螻殊 蠍 伎 碁ゼ . 蠏碁覩襦 碁ゼ 蟇壱覃 Merge Join朱 襴 襯 . 覃 Product 企 ProductID 企ろ磯 碁煙り ″ 蠍 覓語 企 願, B讌 GROUP BY襦 誤 蟶朱 蠍 覓語企. れ襦 ろ 覲企 Merge Join朱 襴 蟆 .

SELECT A.*
FROM Product A INNER JOIN (SELECT ProductID 
                                              FROM SalesOrderDetail
                                              WHERE SalesOrderID > 10000
                                              GROUP BY ProductID) B
--'Product' 企. れ  1, 朱Μ 所鍵  29, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'SalesOrderDetail' 企. れ  1, 朱Μ 所鍵  227, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query09.jpg
sub_query10.jpg

磯Μ螳 襦 . 讌 Compute Scalar 一一螳 蟆朱 願 A.ProductID + '' 一一企襦 蟆曙一 . 伎 覿 . 伎 蠍碁 . 一危一 朱讌 朱襦 襷譟燕 襷 焔レ . 蠏碁 一危郁 貉れ螻 SalesOrderID > 10000 譟郁唄 譯 覲 譟郁唄 螳 伎る ろ螻 れ 覲 .

襷 I/O襯 螻 旧螳 觜襯 蟆曙磯 . 企 蟆 I/O 觜 襷螻 るジ 郁 レ 殊 る 蟆企. 覯 磯殊 旧螳 谿願 . Merge Join朱 ろ螻 蟆曙 れ 伎 譴螳 企朱 Lock 蟇瑚 る I/O 譴企 蟆覲企 企ゼ 螳伎 蟆企. 蠏碁覩襦 磯Μ れ 貎朱Μ襯 豕朱 .

--1
SELECT *
FROM Product
WHERE ProductID IN
    (SELECT ProductID
     FROM SalesOrderDetail
     WHERE SalesOrderID > 10000)

--2
SELECT A.*
FROM Product A INNER JOIN (SELECT ProductID 
                             FROM SalesOrderDetail
                             WHERE SalesOrderID > 10000
                             GROUP BY ProductID) B
ON A.ProductID  = B.ProductID

貎朱Μ ろ螻 螳.

4 蟯 觚 貎朱Μ #

蟯觚貎朱Μ 覃 貎朱Μ螳 襾殊 渚讌螻 觚貎朱Μ襦 郁屋 襯 襷. 讀, 覃 貎朱Μ 螳螳 襷 觚貎朱Μ螳 貎朱Μ襯 覩誤. れ螻 螳 蟆曙磯 蟯觚貎朱Μ 企.
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE 100 IN
   (SELECT royaltyper
   FROM titleauthor
   WHERE titleauthor.au_ID = authors.au_id)
--'authors' 企. れ  9, 朱Μ 所鍵  18, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.
--'titleauthor' 企. れ  1, 朱Μ 所鍵  2, 覓朱Μ 所鍵  0, 覩碁Μ 所鍵  0.

sub_query11.jpg

願 Suppressing螻 螳 蠍磯朱 觚貎朱Μ襯 襾殊 . 郁屋螻襴螳 au_id螳 覃語深襴 蠍 覓語 貎朱Μ襯 襾殊 ろ 螳 . IN 一一 朱 Stream Aggregate 一一襯 れ 覲 . 貎朱Μ 蟆郁骸螳 9螳 企襦 authors 企 9覯 Index Seek 蟆 覲 . 伎 蟯觚貎朱Μ襯 蟆曙磯 . 蠏碁讌襷 覿覿 蟆曙磯 蟯觚貎朱Μ襯 讌 蟆曙郁 襷 . れ螻 螳 蟆曙 覿覿 覿 蟯 觚 貎朱Μ襦 誤 蠍 蟆企.

select (select count(*) + 1 from titles b where a.title_id > b.title_id) 'id', title_id
from titles a
order by 1
--'titles' 企. れ  19, 朱Μ 所鍵  37, 覓朱Μ 所鍵  3, 覩碁Μ 所鍵  0.
--企 螻 螳 譬襯 蟯觚貎朱Μ 覿燕[* >, <, >=, <=]螳  一危一 郁屋 
--貉れ襯  襭  觜襯 蟆曙郁 覿覿企. 

sub_query12.jpg

I/O 覲企 豌 19覯 れ . 譟一語企襦 覯 曙朱, 襾語 18覯 SELECT 觚貎朱Μ 曙 蟆企. 一危郁 朱 讌 焔レ姶襯 覲伎伎 讌襷 一危郁 企襦 焔レ姶 蠍一蠍朱 企. 蟆曙磯 朱覯碁ゼ 襷り鍵 蟆企. 谿朱Μ 企 蟆曙磯朱 企 IDENTITY() 襯 伎 蟆 .