對於我使用InnoDB引擎和我的表結構的MySQL表看起來是這樣的:PHP與MySQL的性能 - 一個大的查詢與多個小
表用戶
id | username | etc...
----|------------|--------
1 | bruce | ...
2 | clark | ...
3 | tony | ...
表用戶的電子郵件
id | person_id | email
----|-------------|---------
1 | 1 | [email protected]
2 | 1 | [email protected]
3 | 2 | [email protected]
爲了從數據庫中提取數據我已經寫了一個小framewor ķ。例如。在__construct($id)
它檢查是否有一個人與給定的ID,如果是,它會創建相應的模型,並只保存字段id
到一個數組。在運行期間,如果我需要模型中的另一個字段,它只會從數據庫中提取值,並將其保存到數組中並將其返回。例如。與emails
相同,因爲我的代碼訪問表user-emails
並獲取相應用戶的所有電子郵件。
對於小型模型來說,這個工作正常,但現在我正在處理另一個項目,我必須一次爲列表獲取大量數據,並且需要一些時間。另外我知道很多連接到MySQL和許多查詢對服務器來說都是很有壓力的,所以...
我現在的問題是:我應該在構建模型時一次獲取所有數據(包含左連接等)並將這些字段保存爲一個數組,或者我應該使用其他方法?
...取決於。一般來說,使用許多簡單的查詢將比使用一個複雜的查詢更好;但這取決於它的複雜程度以及您的索引是如何設置的。 – CD001
您應該只測量性能並查看是否有問題。 – pvg
@ CD001這個評論實際上讓我感到驚訝,人們試圖將許多SQL查詢填充到一個大查詢中的數量使我認爲更少的大型查詢通常說起來效率更高.....我想我不應該跟隨人羣。 ....':-D' – Martin