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

ควรใช้ LIMIT 1 กับ SELECT 1 ใน MySQL หรือไม่?

ใช่ ควรใช้ LIMIT 1 กับ SELECT 1 เพื่อหยุดการสแกนตารางทันทีที่พบแถวแรก

เหตุผล

SELECT 1 FROM table จะคืนค่า 1 สำหรับทุกแถวในตาราง หากตารางมี 1 ล้านแถว จะได้ 1 ล้านแถวของเลข 1

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

สร้างตาราง 7 แถว:

mysql> create table Select1AndLimit1Demo (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20));
mysql> INSERT INTO Select1AndLimit1Demo(Name) VALUES ('John'),('Carol'),('Sam'),('Bob'),('David'),('Mike'),('Maxwell');

ไม่ใช้ LIMIT 1:

mysql> SELECT 1 FROM Select1AndLimit1Demo;
+---+
| 1 |
+---+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+---+  (7 rows)

ใช้ LIMIT 1:

mysql> SELECT 1 FROM Select1AndLimit1Demo LIMIT 1;
+---+
| 1 |
+---+
| 1 |
+---+  (1 row)

กรณีใช้งานจริง

มักใช้ใน EXISTS หรือเช็คการมีอยู่:

-- ตรวจสอบว่ามีข้อมูลหรือไม่
SELECT 1 FROM users WHERE email = 'test@example.com' LIMIT 1;

-- ใน Subquery
SELECT * FROM orders WHERE EXISTS (
    SELECT 1 FROM customers WHERE customers.id = orders.customer_id AND active = 1 LIMIT 1
);

ประโยชน์

  • หยุด Full Table Scan ทันทีที่เจอแถวแรก
  • ประหยัด CPU, I/O, Network
  • สำคัญมากเมื่อตารางใหญ่