MySql 查询需要很长时间

标签 mysql

嗨,我正在执行一个查询来获取一些产品信息,但是发生了一些奇怪的事情,第一个查询快速返回结果集(.1272s),但第二个查询(请注意,我刚刚添加了 1 列)需要永远完成( 28-35s),有人知道发生了什么事吗?

查询 1

SELECT
p.partnumberp,
p.model,
p.descriptionsmall,
p.brandname,
sum(remainderint) stockint
from
inventario_dbo.inventoryindetails ind
left join purchaseorders.product p on (p.partnumberp = ind.partnumberp)
left join inventario_dbo.inventoryin ins on (ins.inventoryinid= ind.inventoryinid)
group by partnumberp, projectid

查询2

SELECT
p.partnumberp,
p.model,
p.descriptionsmall,
p.brandname,
p.descriptiondetail,
sum(remainderint) stockint
from
inventario_dbo.inventoryindetails inda
left join purchaseorders.product p on (p.partnumberp = inda.partnumberp)
left join inventario_dbo.inventoryin ins on (ins.inventoryinid= inda.inventoryinid)
group by partnumberp, projectid

最佳答案

除非使用聚合函数,否则不应按某些列进行分组,然后选择其他列。只有 p.partnumberp 和 sum(remainderint) 在这里有意义。您正在进行大量的联接和选择,然后大多数行的结果最终都会被丢弃。

您可以通过先执行内部选择,然后将其连接到其余表以获得最后几列的最终结果,从而使查询速度更快。

内部选择应如下所示:

select p.partnumberp, projectid, sum(remainderint) stockint
    from inventario_dbo.inventoryindetails ind
    left join purchaseorders.product p on (p.partnumberp = ind.partnumberp)
    left join inventario_dbo.inventoryin ins on (ins.inventoryinid = ind.inventoryinid)
    group by partnumberp, projectid

加入后:

select T1.partnumberp, T1.projectid, p2.model, p2.descriptionsmall, p2.brandname, T1.stockint
from
    (select p.partnumberp, projectid, sum(remainderint) stockint
        from inventario_dbo.inventoryindetails ind
        left join purchaseorders.product p on (p.partnumberp = ind.partnumberp)
        left join inventario_dbo.inventoryin ins on (ins.inventoryinid = ind.inventoryinid)
        group by partnumberp, projectid) T1
    left join purchaseorders.product p2 on (p2.partnumberp = T1.partnumberp)

关于MySql 查询需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799177/

相关文章:

php - MySQL 选择逻辑

MySQL - 根据多个条件合并表中的行

php - 如何防止 php 或 mysql 级别的双重表单提交?

mysql - 对有序表进行分组会始终返回第一行吗?数据库

php - Slim 3 框架 : mysql instance good practice

更新触发器后的MYSql不更新表

mysql - 订单不起作用 - MYSQL

php - 数据获取过程中的问题

php - 下拉菜单返回显示 "Please Select"并且未出现失败/成功消息

mysql - 无法使用 ssl 数据库用户访问 mediawiki 网站