作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个疑问。
我有一个大型查询来获取网上商店的所有产品,然后我将数据处理为 CSV 以同步到另一个外部服务器,在本例中为 DooFinder。
现在我正在查询中进行处理。示例:
- round((p.p_price*(SELECT tax_rate FROM tax_rates WHERE tax_rates.tax_rates_id=p.p_tax_class_id)/100)+p.p_price,2)
- concat('https://www.domain.de/pimg/',p.p_image) AS image, p.manufacturers_id
问题是:什么会更有效率?在查询中还是在 PHP 中进行操作?现在我在测试站点中有超过 20 个产品,并且效果完美,但目标是拥有 +1.000 个产品。
这是查询($i 代表每种语言,因此 +1.000 个产品 * 语言数量):
SELECT
pd.p_name,
p.p_quantity,
concat('https://www.domain.de/pinf.php?products_id=',p.products_id) AS p_link,
pd.p_description,
p.p_id,
p.p_tax_class_id,
p.p_date_available ,
round((p.p_price*(SELECT tax_rate FROM tax_rates WHERE tax_rates.tax_rates_id=p.p_tax_class_id)/100)+p.p_price,2) AS price,
concat('https://www.domain.de/pimg/',p.p_image) AS image, p.manufacturers_id
FROM
products p,
p_description pd,
p_to_categories ptc
WHERE
p.p_id = pd.p_id
AND
pd.language_id = ".$i."
AND
p.p_status=1
AND
ptc.p_id = p.p_id
AND
ptc.categories_id != 218
GROUP by p.p_id
最佳答案
在决定是在客户端还是在数据库服务器上执行计算时,您应该考虑以下因素:
在您的具体示例中,额外计算的开销相对于查询的其余部分来说是微乎其微的,因此,如果您已经对其进行了编码以在服务器上执行此操作,我会像这样保留它。同时,如果你在客户端做,也没有那么糟糕,所以我仍然不会费心去重构。
但是,我要解决一件事 - 将税率子选择重写为联接。即使 MySQL 优化器进行了适当优化,这一计算也会比任何计算产生更多的开销。
当然,正如评论中所建议的,对你的表现进行基准测试并根据这些测量结果做出决策。除了显而易见的问题之外,正确的基准测试还有一个额外的好处,那就是帮助发现奇怪的性能甚至功能错误,否则用户可能会在最糟糕的时间发现这些错误。
关于php - MySQL还是PHP运行效率高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47206208/
这个问题对我来说非常具体,所以我在 Stack Overflow 上找不到相关问题。因此,我正在编写如下所示的 grep 代码。我对 stringindextoutofboundexception 感
我是一名优秀的程序员,十分优秀!