我正在研究一些使用MVC框架的PHP項目,儘管它們都有不同的從數據庫中檢索對象的方式,但似乎沒有什麼比用手寫SQL查詢更快,並且減少查詢數量。什麼是MVC模型中有效的數據訪問的良好平衡?
例如,我的網絡項目之一(由初級開發者編寫)執行超過100個查詢,只是加載主頁。原因是在一個地方,一個方法會加載一個對象,但是稍後在代碼的更深處,它會加載一些與第一個對象相關的其他對象。
這導致了問題的其他部分,人們在表格的某個部分只需要幾列數值而另一部分需要其他部分的情況下正在做什麼?現在(在同一個項目中),每個對象都有一個get()方法,它會執行一個「SELECT *」(或者明確列出表中的所有列),以便在任何時候因爲任何原因需要該對象時,你得到了整個事情。
因此,換句話說,你聽到所有人都在談論如何SELECT *是壞的,但如果您嘗試使用自帶的框架ORM類,它要做到這一點,通常。你堅持選擇ORM與SELECT *手動編寫特定的SQL查詢?在我看來,我們堅持在便利和效率之間,如果我手寫查詢,如果添加一列,我很可能不得不將它添加到代碼中的多個位置。
很抱歉的長期問題,但我解釋的背景,得到其他開發商的一些思維方式,而不是可能是具體的解決方案。我知道我們總是可以使用像Memcached這樣的東西,但我寧願在進入之前優化我們所能做的。
感謝您的任何想法。
感謝您的回答!它幾乎證實了我的想法...... ORM並不是爲速度而設計的,而是爲了便於使用......就像貶低「編程」的lanuners並希望更好的程序員一樣。 :) – Poldon 2009-04-30 20:57:23