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

Anonim

SQL มีอยู่ใน

การแก้ปัญหาใน TSQL สามารถทำได้ผ่านทางวิธีการต่างๆและสามารถเห็นผลที่ต้องการได้จากการใช้งานเหล่านี้ หนึ่งในวิธีที่ผลลัพธ์ที่ได้คือการใช้คำสั่ง IN และ EXISTS การใช้ข้อความช่วยในการกรองผลการค้นหาโดยอ้างอิงกับข้อความค้นหาย่อยที่พร้อมใช้งาน การดำเนินการของ IN และ EXISTS แตกต่างกันเล็กน้อยและเป็นความแตกต่างเหล่านี้ที่ได้รับการประเมิน

มีปัจจัยต่างๆที่กำหนดว่า IN หรือ EXISTS จะถูกนำออกใช้หรือไม่ หนึ่งในนั้นเป็นข้อมูลที่มีอยู่ในตาราง จำนวนมากของผลลัพธ์ข้อมูลในเซิร์ฟเวอร์ SQL กลับไปใช้ดัชนีสแกนแทนที่จะใช้ดัชนีค้นหา

ความแตกต่าง

สถิติที่ให้ไว้ยังบอกได้เป็นอย่างมากเกี่ยวกับแผนการดำเนินการที่ควรปฏิบัติตาม ความแตกต่างจะปรากฏขึ้นเมื่อเซิร์ฟเวอร์มีสถิติเพียงพอที่จะทำการตัดสินใจที่ถูกต้องและเมื่อไม่มีสถิติเป็นครั้งแรก ฮาร์ดแวร์ที่ใช้งานยังกำหนดว่าจะใช้ IN หรือ EXISTS หรือไม่ นี่คือส่วนใหญ่ขึ้นอยู่กับจำนวนของ CPU ที่มีอยู่

มีการเรียกใช้ EXISTS เมื่อจำเป็นต้องจับคู่ผลลัพธ์ของข้อความค้นหากับข้อความค้นหาย่อยอื่น IN ในมืออื่น ๆ จะใช้เมื่อเรียกค่าของคอลัมน์เฉพาะที่อยู่ในรายการ การตัดสินใจที่จะใช้ขึ้นอยู่กับความเหมาะสม แต่เพียงผู้เดียว i. อี เมื่อคุณรู้สึกว่าการใช้งานนั้นเหมาะสม

ในกรณีที่มีการใช้แบบสอบถามย่อยและส่งกลับค่า null ข้อความทั้งหมดจะเป็น NULL ซึ่งมีผลต่อการใช้คำหลัก EXISTS การใช้คำหลัก IN จะเกิดขึ้นเมื่อต้องเปรียบเทียบค่าต่างๆใน subqueries คำหลัก EXISTS ใช้เป็นหลักในการประเมินงบจริงหรือเท็จและ IN จะใช้ในข้อความค้นหาย่อยที่สอดคล้องกันมากที่สุด

โดยทั่วไปแล้ว EXISTS จะเร็วกว่า IN สาเหตุที่ว่าเมื่อ EXISTS ถูกเรียกใช้งานการค้นหาได้พบ Hit และจะตรวจสอบว่าเงื่อนไขได้พิสูจน์แล้วว่าเป็นจริงหรือไม่ เมื่อรัน IN จะรวบรวมผลการค้นหาทั้งหมดจากข้อความค้นหาย่อยและนำเสนอให้ประมวลผลต่อไปและขั้นตอนนี้จะใช้เวลาสักครู่

เป็นเรื่องสำคัญที่ต้องทราบว่าการใช้ถ้อยคำในการสืบค้นต้องถูกต้องและตรวจสอบก่อนที่จะเริ่มดำเนินการ ความล้มเหลวในการตรวจสอบให้แน่ใจว่าข้อความค้นหานี้เป็นผลลัพธ์ที่ถูกต้องกับ EXISTS และ IN ที่นำเสนอค่าต่างๆและนี่ไม่ใช่จุดมุ่งหมายของการใช้งานในเซิร์ฟเวอร์ SQL เครื่องมือเพิ่มประสิทธิภาพต้องเป็นไปอย่างเหมาะสมที่สุดเมื่อทำงานตามที่ควร

สรุป

การแก้ปัญหาใน TSQL ทำได้โดยทั่วไปกับ EXISTS และ IN

สังเกตความแตกต่างเล็กน้อยเมื่อรีดออก EXISTS และ IN แม้ว่าการเพิ่มประสิทธิภาพสำหรับแต่ละควรให้ค่าเท่ากัน

สถิติเป็นปัจจัยหนึ่งที่กำหนดว่า EXISTS หรือ IN จะถูกนำมาใช้งาน

ฮาร์ดแวร์ที่ใช้งานมีความสำคัญในการกำหนดว่าจะใช้ EXISTS หรือ IN

การใช้ EXISTS จะเป็นประโยชน์เมื่อมี ต้องสร้างความสัมพันธ์ผลลัพธ์ของข้อความค้นหาที่ระบุกับข้อความค้นหาย่อยอื่นEXISTS เป็นเรื่องปกติทั่วไปเมื่องบจริงหรือเท็จต้องการการประเมินผล

IN มักใช้เมื่อจำเป็นต้องเรียกคอลัมน์เฉพาะในรายการ นอกจากนี้ยังใช้กันทั่วไปเมื่อต้องเปรียบเทียบค่าในแบบสอบถามย่อย

EXISTS โดยทั่วไปทำงานได้เร็วกว่า IN ขณะที่ทำงานพบ Hit และตรวจสอบว่าเงื่อนไขได้พิสูจน์แล้วว่าเป็นจริง

IN ทำงานช้ากว่าเมื่อเก็บรวบรวมผลลัพธ์ทั้งหมดจากข้อความค้นหาย่อยและประมวลผลหรือไม่

แม้ว่าจะมีการประหารชีวิตที่ต่างกันการเพิ่มประสิทธิภาพควรให้ผลลัพธ์ที่ใกล้เคียงกันใน EXISTS และ IN