MySQL以高效能著稱,但要發揮其最大效能,開發者需具備資料庫設計與查詢優化的洞察力。許多新手缺乏關聯式資料庫理論基礎,往往採取「廚房下水道」式設計——什麼資料都存、什麼欄位都查,導致效能隨資料增長而急劇下降。本文提出兩大核心原則,助你打造高效應用。
以線上產品目錄為例,除價格外,稅額與運費皆可由應用程式或MySQL即時計算得出。若將其硬編碼入表中,稅率或運費一旦變動,勢必引發大規模UPDATE操作。MySQL支援ALTER TABLE動態調整結構,例如:
ALTER TABLE products ADD rank INTEGER;
隨時可新增欄位,無須一開始就過度設計。現實評估需求,避免儲存可衍生計算的資料,能大幅縮減儲存體積與維護成本。
SELECT * FROM sometable雖省事,但隨著表增長與結構變更,會造成不必要的I/O與網路傳輸開銷。應改為明確列出欄位:
SELECT name, rank, description FROM products
ALTER TABLE)會改變欄位相對位置。grep或編輯器搜尋快速定位所有引用點進行修正。程式碼可維護性長遠看比微小的效能差異更重要。大多數語言(PHP、Python、Perl、Java等)皆支援以欄位名存取結果集,養成明確指定欄位的習慣,是通往高效MySQL應用的必經之路。