CHAR(6)而非CHAR(255)/VARCHARMEDIUMINT代替BIGINTNOT NULL盡量NOT NULL(省NULL判斷)ENUM → 內部存數值,**比較/排序極快**刪除無訂單客戶:
-- 子查詢
DELETE FROM customerinfo WHERE CustomerID NOT IN (SELECT CustomerID FROM salesinfo);
-- LEFT JOIN(salesinfo有索引時極快)
SELECT * FROM customerinfo
LEFT JOIN salesinfo ON customerinfo.CustomerID = salesinfo.CustomerID
WHERE salesinfo.CustomerID IS NULL;
原理:JOIN避免內存臨時表,**MySQL 5.6+優化器可將半連接轉為JOIN**,但顯式JOIN更穩健。
SELECT Name, Phone FROM client
UNION
SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM product;
SELECT**列數必須一致**UNION ALL保留重複行,更快BEGIN;
INSERT INTO salesinfo SET CustomerID=14;
UPDATE inventory SET Quantity=11 WHERE item='book';
COMMIT;
失敗自動ROLLBACK。併發下利用行鎖隔離,但**長事務殺併發**,權衡使用。