鉴于这两个问题,我无法解释原因
SELECT YEAR(TIMESTAMP) AS YEAR,
MONTH(TIMESTAMP) AS MONTH,
DAY(TIMESTAMP) AS DAY,
COUNT(IDENTITY) AS number,
type
FROM entity AS e,
annotation AS a
WHERE e.annotationIdAnnotation = a.idAnnotation
AND type = "Location"
GROUP BY YEAR(TIMESTAMP),
MONTH(TIMESTAMP),
DAY(TIMESTAMP),
type
SELECT YEAR(TIMESTAMP) AS YEAR,
MONTH(TIMESTAMP) AS MONTH,
DAY(TIMESTAMP) AS DAY,
COUNT(IDENTITY) AS number
FROM entity AS e,
annotation AS a
WHERE e.annotationIdAnnotation = a.idAnnotation
AND type = "Location"
GROUP BY YEAR(TIMESTAMP),
MONTH(TIMESTAMP),
DAY(TIMESTAMP)
第二个占第一个的100%。 我在类型上有一个btree索引,但是我无法解释为什么在已经由where子句过滤的字段上的group by可以增强查询的性能。
提前致谢
答案 0 :(得分:0)
这是非常直接和简单的原因。 如你所说,你有类型列索引。因此索引使查询更快。
在第一个查询中,您使用的是where and GROUP by
子句中的索引类型,但在第二个查询中,您只使用where
子句中的类型。因此,在第一个查询中,GROUP BY
子句中的类型使用可以快速查询,如减少行数并选择一组行。
有关索引see here的详细信息。
此链接将清除更多内容。
这是第一个查询比第二个查询快的原因。