是sqlite memoized中的函数调用?

时间:2018-03-21 02:04:39

标签: database sqlite

这是设置:

.open ':memory:'

CREATE TABLE foos (x INTEGER);
INSERT INTO foos (x)
VALUES (1), (1), (2), (1), (3), (2);

这个查询(让我们称之为query1

SELECT x, count(x)
FROM foos
GROUP BY x
HAVING count(x) > 1;

慢于此查询(query2):

SELECT x, count(x) AS xcnt
FROM foos
GROUP BY x
HAVING xcnt > 1;

换句话说,query1的{​​{1}}的返回值是隐式记忆并在count(x)子句中重用,还是实际上被调用了两次?

以上的输出是

HAVING

修改

1|3 2|2 1|3 2|2 放在两个查询输出上方:

EXPLAIN QUERY PLAN

1 个答案:

答案 0 :(得分:0)

它们是相同的查询。

此外,您应该在x

上创建索引