ควรใช้ intvalue = 1 (ตัวเลข) เพราะ intvalue = '1' (สตริง) จะถูกแปลงเป็น CAST('1' AS INT) ภายใน ทำให้เกิด Overhead เล็กน้อย
mysql> CREATE TABLE DemoTable1566 (
-> intvalue INT
-> );
Query OK, 0 rows affected (0.64 sec)
mysql> INSERT INTO DemoTable1566 VALUES(1); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable1566 VALUES(55); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO DemoTable1566 VALUES(75); Query OK, 1 row affected (0.32 sec) mysql> INSERT INTO DemoTable1566 VALUES(90); Query OK, 1 row affected (0.19 sec)
mysql> SELECT * FROM DemoTable1566;
+----------+ | intvalue | +----------+ | 1 | | 55 | | 75 | | 90 | +----------+ 4 rows in set (0.00 sec)
ทั้งสองคิวรี่ให้ผลลัพธ์เหมือนกัน:
mysql> SELECT * FROM DemoTable1566 WHERE intvalue = 1;
+----------+ | intvalue | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)
mysql> SELECT * FROM DemoTable1566 WHERE intvalue = '1';
+----------+ | intvalue | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)
แนวทางปฏิบัติ: ใช้ Literal ตรงกับชนิดข้อมูลของคอลัมน์ (Number กับ Number, String กับ String) เพื่อประสิทธิภาพและหลีกเลี่ยง Implicit Conversion