下面是我要从当前项目的产品页面的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