ความแตกต่างระหว่างการรวมภายในและการรวมภายนอก

ความแตกต่างระหว่างการรวมภายในและการรวมภายนอก
ความแตกต่างระหว่างการรวมภายในและการรวมภายนอก

วีดีโอ: ความแตกต่างระหว่างการรวมภายในและการรวมภายนอก

วีดีโอ: ความแตกต่างระหว่างการรวมภายในและการรวมภายนอก
วีดีโอ: Business Analysis Training| Difference between BRD/SRS/FRD 2024, พฤศจิกายน
Anonim

เข้าร่วมใน vs เข้าร่วมภายนอก

Inner join และ Outer join เป็นวิธีการรวม SQL สองวิธีที่ใช้ในการประมวลผลแบบสอบถามสำหรับฐานข้อมูล พวกเขาอยู่ในตระกูลของส่วนคำสั่งเข้าร่วม (อีกสองคนคือ Left and Right Joins) อย่างไรก็ตาม มีการเข้าร่วมด้วยตนเองซึ่งสามารถใช้กับสถานการณ์เฉพาะได้ จุดประสงค์ของการรวมคือการรวมเขตข้อมูลโดยใช้ค่าทั่วไปในสองตาราง การรวมเหล่านี้รวมระเบียนจากหลายตารางในฐานข้อมูล มันสร้างชุดผลลัพธ์ซึ่งสามารถบันทึกเป็นตารางอื่นได้

การเข้าร่วมภายในคืออะไร

การดำเนินการ SQL Join ที่ใช้บ่อยที่สุดคือ Inner Joinถือได้ว่าเป็นประเภทเริ่มต้นของการรวมที่ใช้ในแอปพลิเคชัน Inner join ใช้ join-predicate เพื่อรวมสองตาราง สมมติว่าสองตารางคือ A และ B จากนั้นภาคแสดงการรวมจะเปรียบเทียบแถวของ A และ B เพื่อค้นหาคู่ทั้งหมดที่ตรงตามภาคแสดง ค่าคอลัมน์ของแถวที่พึงพอใจทั้งหมดของตาราง A และ B จะถูกรวมเข้าด้วยกันเพื่อสร้างผลลัพธ์ สามารถดูได้ว่าเป็นการรวมการข้าม (ผลิตภัณฑ์คาร์ทีเซียน) ของเร็กคอร์ดทั้งหมดก่อนแล้วจึงส่งคืนเฉพาะเร็กคอร์ดที่ตรงตามภาคแสดงการเข้าร่วม อย่างไรก็ตาม ในความเป็นจริง ผลิตภัณฑ์คาร์ทีเซียนไม่ได้ถูกคำนวณเนื่องจากไม่มีประสิทธิภาพมาก ใช้ Hash join หรือ sort-merge join แทน

Outer Join คืออะไร

ไม่เหมือน Inner join, outer join เก็บบันทึกทั้งหมดแม้ว่าจะไม่พบบันทึกที่ตรงกัน ซึ่งหมายความว่าการรวมภายนอกจำเป็นต้องมีเรกคอร์ดเพื่อค้นหาเรกคอร์ดที่ตรงกันเพื่อให้ปรากฏในผลลัพธ์ แต่จะคืนค่าระเบียนทั้งหมด แต่ระเบียนที่ไม่ตรงกันจะมีค่าว่าง การรวมภายนอกแบ่งออกเป็นสามประเภทย่อยเป็นการรวมภายนอกด้านซ้าย การเข้าร่วมภายนอกด้านขวา และการเข้าร่วมภายนอกแบบเต็ม ความแตกต่างนี้ขึ้นอยู่กับแถวของตาราง (ตารางด้านซ้าย ตารางด้านขวา หรือทั้งสองตาราง) ที่จะถูกเก็บรักษาไว้เมื่อพบระเบียนที่ไม่ตรงกัน การรวมภายนอกด้านซ้าย (หรือที่เรียกว่าการรวมด้านซ้ายอย่างง่าย) จะเก็บระเบียนทั้งหมดของตารางด้านซ้าย นั่นหมายความว่า แม้ว่าระเบียนที่ตรงกันตัวเลขจะเป็นศูนย์ แต่ก็ยังมีระเบียนในตารางผลลัพธ์ แต่จะมีค่าว่างสำหรับคอลัมน์ทั้งหมดของ B กล่าวอีกนัยหนึ่ง ค่าทั้งหมดจากตารางด้านซ้ายจะถูกส่งกลับด้วยค่าที่ตรงกันจากด้านขวา ตาราง (หรือค่าว่างเมื่อไม่ตรงกัน) หากค่าจากหลายแถวจากตารางด้านซ้ายตรงกับแถวเดียวจากตารางด้านขวา แถวจากตารางด้านขวาจะถูกทำซ้ำตามต้องการ การรวมภายนอกด้านขวาค่อนข้างคล้ายกับการรวมภายนอกด้านซ้าย แต่การปฏิบัติต่อตารางเป็นที่เคารพ ซึ่งหมายความว่าผลลัพธ์จะมีแถวทั้งหมดของตารางด้านขวาอย่างน้อยหนึ่งครั้งโดยมีค่าตารางด้านซ้ายที่ตรงกัน (และค่าว่างสำหรับค่าด้านขวาที่ไม่ตรงกัน) การรวมภายนอกแบบเต็มจะครอบคลุมมากกว่าการรวมภายนอกทั้งด้านซ้ายและขวาส่งผลให้เกิดการรวมเอฟเฟกต์ของการใช้ทั้งด้านนอกซ้ายและขวาเข้าด้วยกัน

การเข้าร่วมภายในและการเข้าร่วมภายนอกแตกต่างกันอย่างไร

Inner Join ไม่เก็บแถวที่ไม่ตรงกันในผลลัพธ์ แต่การเข้าร่วมภายนอกจะเก็บบันทึกทั้งหมดจากตารางอย่างน้อยหนึ่งตาราง (ขึ้นอยู่กับว่ามีการใช้การรวมภายนอกใด) ดังนั้น พฤติกรรมของการไม่มีข้อมูลในแถวที่ไม่ตรงกันในตารางผลลัพธ์จึงเป็นสิ่งที่ไม่พึงปรารถนา คุณต้องใช้หนึ่งในการรวมภายนอกเสมอ (แทนที่การรวมภายใน) การเข้าร่วมภายในอาจไม่ให้ผลลัพธ์หากไม่พบรายการที่ตรงกัน แต่การรวมภายนอกจะสร้างตารางผลลัพธ์เสมอ แม้จะไม่มีแถวที่ตรงกัน Inner join จะคืนค่าตารางที่มีค่าเสมอ (หากส่งคืน) แต่การรวมภายนอกอาจส่งผลให้ตารางมีค่าว่าง