我应该在多大程度上最小化数据库查询


How far should I go to minimize database queries?

以下是我将从MySQL数据库中为当前项目的产品页面提取的数据的描述。

产品数据来自product表,变量名称(颜色、大小等)来自名为product_option_group的表,这些变量(红色、绿色、蓝色或小、中、大等)的实际值在product_option表中,与该产品相关的产品照片在product_photo中。

我可能会使用JOIN-s创建一个查询,在一个查询中返回所有这些(产品、变量、值、照片),然后我需要使用foreach才能使其变得有用。我的问题是这是否有意义。我应该在多大程度上减少查询?

在产品列表的情况下,我使用一个查询来获取少量的产品数据和第一张产品照片的URL。但在显示单个产品的页面上,我有点不确定最佳方法。这似乎是我编写一个疯狂的长MySQL查询,然后进行大量PHP解析的一种方式。另一种方式是我进行大量的数据库调用。

哪一个最好?

我一直被教导(并接受)这样一种假设,即应该只在需要时进行优化,而不是试图优化不会造成问题的东西。

所以,在你的情况下,拿着你所拥有的,把它运行一遍——给它加载,看看它是如何处理的。如果它很慢,那么考虑一下你是想尝试组合成一个查询,还是添加一两个索引,或者你可以做些什么来加快它。问问自己,是DB返回缓慢,还是两者之间来回的流量是问题所在,或者PHP处理速度不够快。

把你的时间花在需要的地方,记住保持简单。

最大限度地减少每次页面加载的查询数量是一种很好的做法。

然而,数据库服务器擅长处理许多小查询。许多CMS的每页加载都有数百个查询

所以,总是尝试优化,但不要疯狂。