簡短回答:是的,仍然需要深入理解索引。
// ORM 產生 SELECT * FROM orders WHERE user_id = ? AND status = ? AND create_time > ?; // DBA 分析後建立 CREATE INDEX idx_uid_status_ctime ON orders(user_id, status, create_time); // 或視選擇性調整順序 CREATE INDEX idx_status_uid_ctime ON orders(status, user_id, create_time);
ORM 不知道 status 只有 3 個值(低選擇性),user_id 高選擇性,導致索引順序錯誤、查詢退化為全表掃描。
ORM 解決「寫 SQL 的效率」,索引解決「查 SQL 的效能」。兩者互補,不可替代。資深工程師必須同時精通 ORM 映射技巧與索引設計原理。