通常地,應該保存所有的冗余數據(在數據庫原理中叫做"第三范式")。然而,為了能取得更高的效率復制一些信息或者創建摘要表也是劃算的。
存儲過程或者 UDFs(用戶定義函數) 的方式在執行一些任務時可能性能更高。盡管如此,當數據庫不支持這些特性時,還是有其他的替代方法可以達到目的,即使它們有點慢。
可以從查詢緩存或應答中取得結果,然後將很多次的插入及更新操作放在一起做。如果數據庫支持表鎖(如MySQL和ORACLE),那麼這就可以確保索引緩存在所有的更新操作之後只需要刷新一次。
當不需要直到數據什麼時候寫入表中時,可以用 INSERT DELAYED。這就會提高速度,因為多條記錄同時在一起做一次磁盤寫入操作。
當想讓 SELECT 語句的優先級比插入操作還高時,用 INSERT LOW_PRIORITY。
用 SELECT HIGH_PRIORITY 來使檢索記錄跳過隊列,也就是說即使有其他客戶端正要寫入數據,也會先讓 SELECT 執行完。
在一條 INSERT 語句中采用多重記錄插入格式(很多數據庫都支持)。
用 LOAD DATA INFILE 來導入大量數據,這比 INSERT 快。
用 AUTO_INCREMENT 字段來生成唯一值。
定期執行 OPTIMIZE TABLE 防止使用動態記錄格式的 MyISAM 表產生碎片。詳情請看"15.1.3 MyISAM Table Storage Formats"。
采用 HEAP 表,它可能會提高速度。詳情請看"15.1.3 MyISAM Table Storage Formats"。
正常的WEB服務器配置中,圖片文件最好以文件方式存儲,只在數據庫中保存文件的索引信息。這麼做的原因是,通常情況下WEB服務器對於文件的緩存總是做的比數據庫來得好,因此使用文件存儲會讓系統更容易變得更快。