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

ความแตกต่างระหว่าง intvalue='1' และ intvalue=1 ใน MySQL

ควรใช้ 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