CHAR(6) 而非 VARCHAR(255))。MEDIUMINT 而非 BIGINT。NOT NULL,避免 NULL 比較開銷。ENUM,內部以數值儲存,處理速度遠快於字串。MySQL 4.1+ 支援子查詢,但某些場合 JOIN 效能更佳。
DELETE FROM customerinfo
WHERE CustomerID NOT IN (SELECT CustomerID FROM salesinfo);
SELECT * FROM customerinfo
LEFT JOIN salesinfo ON customerinfo.CustomerID = salesinfo.CustomerID
WHERE salesinfo.CustomerID IS NULL;
原因:JOIN 避免在記憶體建立臨時表,若 salesinfo.CustomerID 有索引,效能差距更大。
MySQL 4.0+ 支援 UNION,可將多個 SELECT 合併,會話結束自動清理臨時表。
SELECT Name, Phone FROM client
UNION
SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM product;
注意:所有 SELECT 欄位數必須相同。
(原文此處截斷,下篇續述)