作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通常使用 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/
我是一名优秀的程序员,十分优秀!