我想优化使用内部联接的查询,并且我对两个非常类似的查询之间的性能差异感到困惑。试图了解两个内部联接查询之间的行为差异
我希望对此有所了解。
的表是这样的:
骨料:
+-recid(key)-+-avg---+
+------------+-------+
历史:
+-recid(key)-+-value-+
+------------+-------+
的目的是让,对于一个给定的密钥(假设1234),AVG和值。
我已经尝试了两个查询谁似乎很相似,我说:
SELECT a.avg, b.value FROM aggregates a, history b
WHERE a.recid = b.recid
AND a.recid = 1234
需要5秒的运行
但是,
SELECT a.avg, b.value FROM aggregates a, history b
WHERE a.recid = 1234
AND b.recid = 1234
运行在不到一秒钟。
这两个查询给出了非常相同的结果。我想了解在性能上的巨大差异
标记您正在使用的dbms。不同的产品以不同的方式优化。 – jarlh
BTW,你运行两个查询多次,在不同的顺序? (冷/热数据。) – jarlh
是的,我已经试过了,这是非常reproductible,一个是一贯〜5慢于其他 – Maxime