gpt4 book ai didi

zend-framework - 优化 (My)SQL 查询

转载 作者:行者123 更新时间:2023-11-29 15:03:52 25 4
gpt4 key购买 nike

我通常使用 ORM 而不是 SQL,并且我对不同的 JOIN 有点脱节......

SELECT `order_invoice`.*
, `client`.*
, `order_product`.*
, SUM(product.cost) as net
FROM `order_invoice`
LEFT JOIN `client`
ON order_invoice.client_id = client.client_id
LEFT JOIN `order_product`
ON order_invoice.invoice_id = order_product.invoice_id
LEFT JOIN `product`
ON order_product.product_id = product.product_id
WHERE (order_invoice.date_created >= '2009-01-01')
AND (order_invoice.date_created <= '2009-02-01')
GROUP BY `order_invoice`.`invoice_id`

表/列是逻辑名称...这是一个商店类型的应用程序...查询有效...它只是非常非常慢...

我使用 Zend Framework,通常会使用 Zend_Db_Table_Row::find(Parent|Dependent)Row(set)('TableClass') 但我必须进行大量连接,我认为它'将通过在一个查询而不是数百个查询中完成所有操作来提高性能...

我可以通过使用更合适的 JOIN 或不同的实现来改进上述查询吗?非常感谢。

最佳答案

查询错误,GROUP BY错误。 SELECT 部分中不在聚合函数中的所有列都必须位于 GROUP BY 中。您只提到了一栏。

更改 SQL 模式,将其设置为 ONLY_FULL_GROUP_BY .

完成此操作并获得正确的查询后,请使用 EXPLAIN 找出查询的执行方式以及使用了哪些索引。然后开始优化。

关于zend-framework - 优化 (My)SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com