【发布时间】:2016-11-08 10:35:40
【问题描述】:
我的查询运行速度很慢。查询的目标是列出表格中的所有文章和表格 artikli 中的数量。然后我想查看其他表格中列出的文章销售情况(今年为 artikli_2016,去年为 artikli_2015)
SELECT a.artid,
a.artsifra,
a.artnaziv,
a.artstanje,
a.artstanjepalete,
( a.artstanje + a.artstanjepalete ) AS total,
Sum(g.izlaz) AS promet,
c.jmoznaka,
Sum(f.izlaz) AS promet
FROM artikli a
LEFT JOIN artikli_2016 g
ON a.artid = g.artikal
LEFT JOIN artikli_2015 f
ON a.artid = f.artikal
LEFT JOIN jed_mjere c
ON a.artmjera = c.jmid
WHERE a.artroditelj != 0
AND a.artaktivan
GROUP BY a.artid
ORDER BY a.artid ASC
一旦我加入 artikli_2015,它就会变得非常缓慢。如果有人可以给我建议或解决方案以更快地运行查询,那将非常有帮助。
【问题讨论】:
-
你的表有索引吗?可以分享一下架构吗?
-
删除 GROUP BY 子句
-
只需将左连接更改为简单连接
-
@Jai 他可能需要来自
artikli的所有记录,这些记录可能不存在于其他表中,例如artikli_2015,我希望不会有2016 年的记录。 -
您实际上是在为 ArtId 的每个值在 artikli_2016 和 artikli_2015 之间进行交叉连接。即,如果每个表上有 100 行对应 ArtId 的特定值,那么就是 10000 种组合。
标签: mysql