NOW()、RAND() 等不確定函數,改用變數預先計算(如 $today = date('Y-m-d'))啟用緩存。rows、type、key 欄位,發現全表掃描或缺失索引。LIMIT 1:找到第一筆即停止,避免全表掃描。LIKE 'a%' 能用索引,LIKE '%a%' 不能,長文本改用全文索引或搜尋引擎。DECIMAL 不能與 INT 直接 JOIN 使用索引。ORDER BY RAND():改用 COUNT(*) 取總數 + 應用層隨機 LIMIT offset,1。SELECT *:只取需要的欄位,減少網路傳輸與 I/O。INT UNSIGNED AUTO_INCREMENT,業務鍵(如 email)勿作主鍵。關聯表除外(複合主鍵)。ENUM 代替 VARCHAR:儲存為 TINYINT,效能高、空間小。PROCEDURE ANALYSE() 獲取結構建議:根據實際資料推薦更精簡類型(如 INT → MEDIUMINT)。NOT NULL:NULL 需額外位元組標記,比較邏輯複雜。mysql_unbuffered_query():大結果集分批處理,節省記憶體,但需手動釋放、不可用 mysql_num_rows()。UNSIGNED INT:4 字節定長,範圍查詢 BETWEEN 極快。用 INET_ATON()/INET_NTOA() 或 PHP ip2long() 轉換。VARCHAR/TEXT/BLOB 即為靜態表,偏移量計算快、易緩存。副作用:浪費空間。可用「垂直分割」分離變長欄位。DELETE ... LIMIT 1000 循環 + usleep() 間隙,避免長鎖表導致服務雪崩。TINYINT/SMALLINT,無時間精度需求用 DATE 而非 DATETIME。預留擴充空間避免未來 ALTER TABLE 鎖表數小時。MyISAM 適合多讀少寫、COUNT(*) 極快;InnoDB 支援行鎖、事務、外鍵,寫多場景優勢明顯。mysql_pconnect():理論減少握手,實際易耗盡連線數、記憶體、檔案句柄,Apache 多進程模型下更難控制。