我在postgres:中有这个递归SQL查询
SELECT b.name, COUNT(*)
FROM a JOIN b ON a.x = b.x
WHERE a.value = some_value
GROUP BY b.name;
(计算每个b.name的a.value的出现次数(
有助于提高查询效率的最佳索引是什么?我假设对于a.value,在其上创建哈希索引会有所帮助。但是旁边的小组呢?是否有一些复合指数解决方案?还是另一种解决方案?
Never使用NATURAL JOIN
。目前尚不清楚您的查询实际在做什么。犯错误很容易。最重要的是;天然的";join不使用使用外键关系显式声明的自然关系。
让我假设您的查询如下:
SELECT b.name, COUNT(*)
FROM a JOIN
b
ON b.x = a.x
WHERE a.value = some_value
GROUP BY b.name;
在大多数数据库中,您需要以下索引:
a(value, x)
b(x, name)