วิธีทางเลือก 2

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

Dean Smith

Founder, Atamai Analytics

INNER JOIN

SELECT c.CustomerID
      ,c.CompanyName
      ,o.OrderID
      ,o.OrderDate
      ,o.ShippedDate
      ,o.Freight
FROM Customers c
INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID
CustomerID CompanyName OrderID ...
VINET Vins et alcools Chevalier 10248 ...
HANAR Hanari Carnes 10250 ...
VICTE Victuailles en stock 10251 ...
SUPRD Suprêmes délices 10252 ...
... ... ... ...
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

LEFT OUTER JOIN

แบบรวม LEFT OUTER JOIN

แผนภาพเวนน์ Inclusive Left Outer Join

แบบเฉพาะ LEFT OUTER JOIN

แผนภาพเวนน์ Exclusive Left Outer Join

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

Exclusive LEFT OUTER JOIN

SELECT c.CustomerID
      ,c.CompanyName
      ,o.OrderID
      ,o.OrderDate
      ,o.ShippedDate
      ,o.Freight
FROM Customers c
LEFT OUTER JOIN Orders o
    ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL
CustomerID CompanyName OrderID ...
FISSA FISSA Fabrica Inter. Salchichas S.A. NULL ...
PARIS Paris spécialités NULL ...
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

ทบทวน: INTERSECT และ EXCEPT

INTERSECT: ตรวจสอบการมีอยู่

EXCEPT: ตรวจสอบการไม่มีอยู่

ข้อดี

  • เหมาะสำหรับการตรวจสอบข้อมูล
  • ลบข้อมูลซ้ำออกจากผลลัพธ์

ข้อเสีย

  • จำนวนและลำดับคอลัมน์ใน SELECT ต้องเหมือนกันระหว่างคิวรี
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

ทบทวน: EXISTS และ NOT EXISTS

EXISTS: ตรวจสอบการมีอยู่

NOT EXISTS: ตรวจสอบการไม่มีอยู่

ข้อดี

  • sub-query จะหยุดค้นหาทันทีที่ได้ผลเป็น TRUE
  • ผลลัพธ์สามารถมีคอลัมน์ใดก็ได้จาก outer query และเรียงลำดับอย่างไรก็ได้

ข้อเสีย

  • ผลลัพธ์มีได้เฉพาะคอลัมน์จาก outer query เท่านั้น
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

ทบทวน: IN และ NOT IN

IN: ตรวจสอบการมีอยู่

NOT IN: ตรวจสอบการไม่มีอยู่

ข้อดี

  • ผลลัพธ์สามารถมีคอลัมน์ใดก็ได้จาก outer query และเรียงลำดับอย่างไรก็ได้

ข้อเสีย

  • ผลลัพธ์มีได้เฉพาะคอลัมน์จาก outer query เท่านั้น
  • NOT IN จะไม่คืนผลลัพธ์ เนื่องจากวิธีที่มันจัดการกับ null ใน sub-query
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

ทบทวน: INNER JOIN และ L.O.J. แบบเฉพาะ

INNER JOIN: ตรวจสอบการมีอยู่

LEFT OUTER JOIN แบบเฉพาะ: ตรวจสอบการไม่มีอยู่

ข้อดี

  • ผลลัพธ์สามารถมีคอลัมน์ใดก็ได้จากทุกตารางที่ JOIN และเรียงลำดับอย่างไรก็ได้

ข้อเสีย

  • ต้องเพิ่มเงื่อนไข IS NULL ใน WHERE เมื่อใช้ LEFT OUTER JOIN แบบเฉพาะ
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

มาฝึกกันเถอะ!

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

Preparing Video For Download...