PostgreSQL查询优化musicbrainz

PostgreSQL查询优化musicbrainz,sql,postgresql,query-performance,musicbrainz,Sql,Postgresql,Query Performance,Musicbrainz,您好,我有一段postgresql代码,我想对其进行优化以减少临时磁盘空间: SELECT l1.name, l2.name FROM label l1 INNER JOIN label l2 ON l1.id > l2.id INNER JOIN label l3 ON l1.id <> l3.id AND l2.id <> l3.id WHERE NOT EXISTS (SELECT * FROM release_label rl1 INNER JOIN re

您好,我有一段postgresql代码,我想对其进行优化以减少临时磁盘空间:

SELECT l1.name, l2.name
FROM label l1 INNER JOIN label l2 ON l1.id > l2.id INNER JOIN
label l3 ON l1.id <> l3.id AND l2.id <> l3.id 
WHERE NOT EXISTS (SELECT * FROM release_label rl1 INNER JOIN release_label rl2 ON rl1.release = rl2.release WHERE rl1.label = l1.id AND rl2.label = l2.id) AND
EXISTS (SELECT * FROM release_label rl1 INNER JOIN release_label rl3 ON rl1.release = rl3.release WHERE rl1.label = l1.id AND rl3.label = l3.id) AND
EXISTS (SELECT * FROM release_label rl2 INNER JOIN release_label rl3 ON rl2.release = rl3.release WHERE rl2.label = l2.id AND rl3.label = l3.id)`
我使用的数据库是musicbrainz 但它给了我一个错误:

无法写入临时文件的块1973434:设备上没有剩余空间


我有一个简化版的musicbrainz数据库,它的行数更少,而且工作非常完美。请帮助我找到一种优化此代码的方法,干杯

如果确实没有足够的空间来执行查询,那么您应该首先解决该问题。也许有人可以给你一个需要更少内存的版本,但这不是一个直接的解决方案。我们需要一个更大的磁盘-Jawsi想象,我想可能有一种方法可以优化我的查询,感谢您的回复。如果您尝试使用EXPLAIN检查该查询的执行计划,请参见您应该解释希望查询执行的操作。标签有多大?交叉连接3次相当昂贵。例如,如果它有1000行,那么您正在处理一个大约100000000行的中间表。