การค้นหาข้อมูลด้วยสองคีย์ (Two Keys) ใน MySQL สามารถทำได้โดยใช้ OR ร่วมกับคีย์เดี่ยวที่เพิ่มประสิทธิภาพแล้ว หรือใช้ AND ที่เพิ่มประสิทธิภาพแล้ว
วิธีที่ 1: ใช้ OR แบบปกติ
SELECT field1_index, field2_index FROM tableName WHERE field1_index = '1' OR field2_index = '1';
วิธีที่ 2: ใช้ UNION (แนะนำสำหรับประสิทธิภาพ)
วิธีนี้มีประสิทธิภาพมากกว่า เพราะแต่ละคำสั่ง SELECT ค้นหาเพียงคีย์เดียว ทำให้เพิ่มประสิทธิภาพได้ดีกว่า
SELECT field1_index, field2_index FROM tableName WHERE field1_index = '1' UNION SELECT field1_index, field2_index FROM tableName WHERE field2_index = '1';
ข้อดีของ UNION
- แต่ละ SELECT ใช้ดัชนีได้อย่างมีประสิทธิภาพ
- หลีกเลี่ยงปัญหาที่ Optimizer อาจไม่ใช้ดัชนีเมื่อใช้ OR ระหว่างคอลัมน์ต่างกัน
- ผลลัพธ์ไม่ซ้ำกันโดยอัตโนมัติ (UNION ลบแถวซ้ำ)
หมายเหตุ: หากต้องการรวมผลลัพธ์ที่ซ้ำกันด้วย ให้ใช้ UNION ALL แทน