下面是我要從當前項目的產品頁面的MySQL數據庫中提取的數據的描述。產品數據來自product
表,變量名稱(顏色,大小等)來自名爲product_option_group
的表格,這些變量的實際值(紅色,綠色,藍色或小型,中型,大型等)。 )在product_option
表中,並且與該產品相關的產品照片在product_photo
中。我應該走多遠才能最小化數據庫查詢?
我很可能使用JOIN
-s來創建一個查詢,我會再需要foreach
地獄出來,使有用的,它返回了這一切(產品,變量值,照片)單個查詢。我的問題是這是否有意義。我應該在多大程度上儘量減少查詢?
對於產品列表,我使用單個查詢來獲取少量產品數據和第一張產品照片的網址。但在顯示單個產品的頁面上,我對最佳方法有點不確定。看起來像我寫一個瘋狂的長MySQL查詢的一種方式,然後做了很多PHP解析。另一種方式是我正在進行一些數據庫調用。
哪個最好?
當你考慮到每個mysql調用需要x的時間來聯繫mysql服務器,處理數據並返回它,然後外推a)循環和b)站點流量......是的,保持mysql查詢最低限度。某些框架可以幫助你完成這個任務(例如fuelphp)。 – Matt 2012-07-30 14:50:12
請顯示代碼。 – 2012-07-30 14:53:59
'foreach' = 100納秒**納秒**秒到幾微秒。 DB查詢的延遲時間= 20到200毫秒**(通常 - 如果你在龐大的數據集上做複雜的事情,可能是秒,分鐘,小時)。訪問數據庫通常至少需要3-4次網絡往返時間(如果沒有連接,再加上3次)加上至少1-2次搜索時間(除非數據集足夠小以適應內存,通常不會),再加上等待鎖,以及實際傳輸和處理查詢和數據所需的任何內容。你不能擺脫後者,但你可以剝奪前者。 – Damon 2012-07-30 15:11:01