ซึ่งเร็วกว่า
SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique
หรือ
SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID
ซึ่งเร็วกว่า
SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique
หรือ
SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID
คำตอบ:
จะไม่มีความแตกต่าง - เอ็นจิ้นการสืบค้นใน mssql (และในเอ็นจิ้นฐานข้อมูลส่วนใหญ่) จะสร้างแผนคิวรีแบบเดียวกันสำหรับทั้งคู่ คุณสามารถตรวจสอบสิ่งนี้ได้ด้วยการดูแผนแบบสอบถามโดยประมาณและตามจริงใน SQL Workbench
เครื่องมือเพิ่มประสิทธิภาพจะเพิกเฉยต่อสิ่งนี้เพราะมันเข้าร่วมเหมือนกัน
SQL เป็นแบบประกาศไม่ใช่แบบขั้นตอนและแบบสอบถามจะถูกประเมินเป็นแบบ toto ไม่ใช่แบบแถวต่อบรรทัด
วิธีการเกี่ยวกับการสร้างการทดสอบที่ใช้ข้อมูลของคุณเองเพื่อตอบคำถามของคุณ?
หากคุณเรียนรู้สิ่งเดียวเกี่ยวกับการเขียนโปรแกรมฐานข้อมูลมันมักจะมีขนาดที่ไม่เหมาะกับทุกสิ่ง มีแนวทางปฏิบัติที่ดีที่สุด แต่โดยรวมแล้วเป็นกรณีไป
เหตุผลที่ฉันพูดแบบนี้เป็นเพราะด้วยการสืบค้นฐานข้อมูลความสัมพันธ์มักจะมีขนาดไม่เหมาะกับทุกวิธี เนื่องจากมีผู้วางแผนที่ตัดสินใจว่าจะดำเนินการอย่างไรหลังจากข้อมูลของคุณแบบสอบถามเดียวกันสามารถให้แสงได้อย่างรวดเร็วหรือช้ามากขึ้นอยู่กับสิ่งที่ผู้วางแผนเลือกที่จะทำกับข้อมูลที่มีอยู่ในเวลาใดก็ได้ ตัวอย่างเช่นบางครั้งดัชนีคือเพื่อนที่ดีที่สุดของคุณหนึ่งเดือนและหนึ่งเดือนต่อมาศัตรูที่เลวร้ายที่สุดของคุณขึ้นอยู่กับว่าคุณกำลังค้นหาหรือแทรกข้อมูลและวิธีการที่คนอื่นใช้ระบบในขณะที่คุณเรียกใช้แบบสอบถาม ดังนั้นฉันมักจะแนะนำให้สร้างการทดสอบที่พิสูจน์กรณีการใช้งานของคุณว่าแบบสอบถามนี้จะทำงานได้อย่างไร และแม้กระทั่งผลลัพธ์ของคุณอาจเปลี่ยนแปลงไปตามกาลเวลาและคุณจะกลับมาปรับให้เหมาะสมเมื่อข้อมูลและการใช้งานเปลี่ยนแปลงไป
ฉันคิดว่าคำตอบที่คุณจะได้รับจาก stackoverflow นั้นจะเป็นคำตอบของหนังสือเรียนไม่ใช่คำตอบในโลกแห่งความจริงที่มีเพียงสภาพแวดล้อมของคุณเท่านั้นที่สามารถให้ได้ และในที่สุดมันก็เป็นโลกแห่งความจริงของคุณ
ตอนนี้คำค้นหาง่าย ๆ ที่คุณแสดงที่นี่ควรจะมีประสิทธิภาพเท่ากัน แต่ถึงอย่างนั้นฉันก็บอกว่าลองทดสอบและพิสูจน์ถ้าคุณถามคำถาม ฉันจะเชื่อถือผลลัพธ์ก่อนที่จะเชื่อถือคำตอบของใครก็ได้รวมถึงของฉันด้วย