ใช่ เนื่องจากการใช้ DISTINCT (บางครั้งตามความคิดเห็น) ทำให้ ผลลัพธ์ถูกจัดเรียง การจัดเรียงหลายร้อยระเบียนต้องใช้เวลา ลองใช้ GROUP BY คอลัมน์ทั้งหมดของคุณ บางครั้งอาจทำให้เครื่องมือเพิ่มประสิทธิภาพการสืบค้นข้อมูลเลือกอัลกอริธึมที่มีประสิทธิภาพมากขึ้น (อย่างน้อยกับ Oracle ฉันสังเกตเห็นว่าประสิทธิภาพเพิ่มขึ้นอย่างมาก)
ใช้ความแตกต่างไม่ดีไหม
ก็นะ การใช้ "ความแตกต่าง" ที่ไม่เหมาะสมไม่เพียงแต่ซ่อนปัญหาที่แท้จริง (รายการที่ซ้ำกันในตาราง ไม่มีเงื่อนไขในอนุประโยค) ตามที่กล่าวไว้ข้างต้น แต่ยัง ลดประสิทธิภาพของแบบสอบถาม… สิ่งนี้จะทำให้ต้นทุน IO (การอ่านเชิงตรรกะ) ของการสืบค้นเพิ่มขึ้นอย่างมาก
ความแตกต่างทำให้การสืบค้นช้าลงหรือไม่
การสืบค้นน้อยมากอาจทำงานเร็วขึ้นในโหมด SELECT DISTINCT และ น้อยมากที่จะทำงานช้ากว่า (แต่ไม่ช้ากว่ามาก) ในโหมด SELECT DISTINCT แต่สำหรับกรณีหลัง เป็นไปได้ ที่แอปพลิเคชันอาจต้องตรวจสอบกรณีที่ซ้ำกันซึ่งเปลี่ยนภาระการทำงานและความซับซ้อนให้กับแอปพลิเคชัน
ใช้ความแตกต่างหรือ GROUP BY ดีกว่า
ใน MySQL DISTINCT ดูเหมือน เร็วกว่า GROUP BY เล็กน้อย ถ้า theField ไม่ได้รับการจัดทำดัชนี DISTINCT กำจัดเฉพาะแถวที่ซ้ำกัน แต่ดูเหมือนว่า GROUP BY จะจัดเรียงแถวเพิ่มเติม
ทำไมเราไม่ควรใช้ความแตกต่างใน SQL
หาก select different ใช้เพื่อ 'แก้ไข' ปัญหา คุณก็มักจะได้รับผลการปฏิบัติงานที่ไม่ดีตอบแทน GROUP BY ให้คุณใช้ฟังก์ชันการรวม เช่น AVG, MAX, MIN, SUM และ COUNT DISTINCT แค่ลบรายการที่ซ้ำกัน.