Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีที่มีประสิทธิภาพที่สุดในการตรวจสอบความมีอยู่ของแถวใน MySQL

วิธีตรวจสอบว่าแถวมีอยู่ในตาราง MySQL อย่างมีประสิทธิภาพ

วิธีที่เร็วที่สุดและใช้ทรัพยากรน้อยที่สุดคือใช้ COUNT(1) หรือ COUNT(*) พร้อมเงื่อนไข WHERE แทนการ SELECT *

SELECT COUNT(1) FROM yourTableName WHERE yourCondition;

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล:

mysql> create table DemoTable (Id int, FirstName varchar(20));
mysql> insert into DemoTable values(100,'Larry');
mysql> insert into DemoTable values(110,'Sam');
mysql> insert into DemoTable values(120,'Mike');
mysql> insert into DemoTable values(130,'Carol');
mysql> insert into DemoTable values(140,'David');

ตรวจสอบว่ามีแถวที่ Id = 130 หรือไม่:

mysql> select count(1) from DemoTable where Id = 130;
+----------+
| count(1) |
+----------+
| 1        |
+----------+

การตีความผลลัพธ์:

  • ผลลัพธ์ = 1 (หรือ > 0) → พบแถว
  • ผลลัพธ์ = 0 → ไม่พบแถว

ทำไม COUNT(1) จึงดีกว่า SELECT *:

  • ไม่ต้องส่งข้อมูลทั้งแถวกลับมา (Network/IO น้อยลง)
  • Optimizer สามารถใช้ Index Only Scan ได้ (ถ้ามี Index บนคอลัมน์ WHERE)
  • หยุดค้นหาทันทีที่พบแถวแรก (Short-circuit) ในบาง Storage Engine

ทางเลือกอื่น: EXISTS (SELECT 1 FROM table WHERE condition) - ใช้ใน Subquery ได้ดีมาก และหยุดค้นหาทันทีที่พบ