Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带限制的PostgreSQL查询计划_Sql_Postgresql_Postgresql Performance_Sql Limit - Fatal编程技术网

带限制的PostgreSQL查询计划

带限制的PostgreSQL查询计划,sql,postgresql,postgresql-performance,sql-limit,Sql,Postgresql,Postgresql Performance,Sql Limit,如果查询的实际结果将加入大量数据(如searchterm较短或经常出现的城市名称,见下文),则使用limit限制该查询的输出不会提高执行时间,实际上会导致糟糕的性能: 但是,如果要连接的数据很小,则执行时间显然很长: 现在,如果Postgres事先知道输出最多包含25行,为什么会有如此糟糕的执行性能?如何重新编写查询 SELECT addritems.plz FROM addritems INNER JOIN adresse ON adresse.adrcd = addrit

如果查询的实际结果将加入大量数据(如
searchterm
较短或经常出现的城市名称,见下文),则使用limit限制该查询的输出不会提高执行时间,实际上会导致糟糕的性能:

但是,如果要连接的数据很小,则执行时间显然很长:

现在,如果Postgres事先知道输出最多包含25行,为什么会有如此糟糕的执行性能?如何重新编写查询

SELECT addritems.plz
FROM   addritems
      INNER JOIN adresse ON adresse.adrcd = addritems.adrcd
      INNER JOIN strasse ON adresse.skz = strasse.skz
                        AND adresse.gkz = strasse.gkz
      INNER JOIN ortschaft ON adresse.okz = ortschaft.okz
                         AND adresse.gkz = ortschaft.gkz
      INNER JOIN gemeinde ON adresse.gkz = gemeinde.gkz
WHERE  search @@ to_tsquery(plainto_tsquery('german', 'searchterm')::text || ':*')limit 25;

听起来很奇怪,当您没有或没有正确的
顺序
子句时,拥有
限制
子句会严重影响性能。阅读有关性能的问题,需要提供最少的基本信息。显然,你对博士后的理解是从一开始的。您甚至没有表限定
搜索
,让我们看看这是从哪里来的。此外,我们更喜欢查询计划的文本而不是粘贴的图像。如果查询计划很大,请上传到explain.depesz.com。考虑标签中的指令。托马斯的答案可能与你有关,也可能与你无关。