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

SELECT * ช้ากว่าการระบุชื่อคอลัมน์ 40 คอลัมน์ใน MySQL?

ทำไม SELECT * จึงช้ากว่าการระบุชื่อคอลัมน์

การใช้ SELECT * ทำให้ MySQL ต้องอ่านข้อมูลทุกคอลัมน์ รวมถึงคอลัมน์ที่ไม่จำเป็น ส่งผลให้:

  • เพิ่ม I/O และการถ่ายโอนข้อมูลระหว่างดิสก์และหน่วยความจำ
  • ไม่สามารถใช้ Covering Index ได้อย่างมีประสิทธิภาพ
  • เพิ่มภาระเครือข่ายหากส่งข้อมูลไปยังแอปพลิเคชัน
ดังนั้น ควรระบุชื่อคอลัมน์ที่ต้องการอย่างชัดเจน

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

mysql> CREATE TABLE DemoTable (
    Id INT,
    Name VARCHAR(20),
    Age INT,
    ZipCode VARCHAR(20),
    CountryName VARCHAR(20)
);
Query OK, 0 rows affected (0.82 sec)

mysql> INSERT INTO DemoTable VALUES(101,'Chris',23,'0909332','US');
mysql> INSERT INTO DemoTable VALUES(102,'Bob',24,'8747443','AUS');
mysql> INSERT INTO DemoTable VALUES(103,'Adam',21,'9988833','UK');

ใช้ SELECT *

mysql> SELECT * FROM DemoTable;

ใช้ระบุชื่อคอลัมน์ (แนะนำ)

mysql> SELECT Id, Name, Age, ZipCode, CountryName FROM DemoTable;

ทั้งสองคำสั่งให้ผลลัพธ์เหมือนกัน แต่คำสั่งที่สองมีประสิทธิภาพดีกว่า

คำแนะนำ

  • ระบุชื่อคอลัมน์เสมอในโค้ด Production
  • ใช้ SELECT * เฉพาะในการสำรวจข้อมูล Ad-hoc เท่านั้น
  • หากตารางมีคอลัมน์มาก (เช่น 40+) ความแตกต่างของประสิทธิภาพจะชัดเจนมาก