ใช้ Modulo Operator (%) ตรวจสอบหารลงตัว
ออปอเรเตอร์ % (Modulo) คืนค่าเศษจากการหาร ใช้ ID % 4 = 0 ตรวจสอบว่า ID หาร 4 ลงตัว
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
ID INT,
StudentName VARCHAR(10),
CountryName VARCHAR(20)
);
INSERT INTO DemoTable VALUES
(0, 'David', 'AUS'), (3, 'Chris', 'UK'), (8, 'Carol', 'US'),
(9, 'Sam', 'US'), (12, 'Robert', 'UK'), (10, 'Mike', 'AUS');
ข้อมูลในตาราง
+------+-------------+-------------+ | ID | StudentName | CountryName | +------+-------------+-------------+ | 0 | David | AUS | | 3 | Chris | UK | | 8 | Carol | US | | 9 | Sam | US | | 12 | Robert | UK | | 10 | Mike | AUS | +------+-------------+-------------+
คำสั่งค้นหา ID หาร 4 ลงตัว
SELECT * FROM DemoTable WHERE (ID % 4) = 0;
ผลลัพธ์ (0, 8, 12)
+------+-------------+-------------+ | ID | StudentName | CountryName | +------+-------------+-------------+ | 0 | David | AUS | | 8 | Carol | US | | 12 | Robert | UK | +------+-------------+-------------+
คำอธิบาย:
ID % 4คำนวณเศษจากการหาร ID ด้วย 4= 0หมายถึงหารลงตัว (0, 4, 8, 12, 16, ...)- ID = 0 ก็หาร 4 ลงตัว (0 ÷ 4 = 0 เศษ 0)
ประยุกต์ใช้:
- แบ่ง Batch/Partition:
WHERE id % 10 = 0(ทุก 10 แถว) - Round Robin:
WHERE id % N = worker_idแบ่งงานให้ N Worker - Sampling:
WHERE RAND() < 0.01หรือWHERE id % 100 = 42(1% Sample)
⚐ ประสิทธิภาพ: % บนคอลัมน์ Index ไม่สามารถใช้ Index ได้ (Non-sargable) หากตารางใหญ่ ควรเพิ่มคอลัมน์ Computed/Generated Column เก็บ id % 4 ไว้แล้ว Index คอลัมน์นั้น