使用LIMIT的PostgreSQL查询计划

时间:2016-04-14 18:15:32

标签: sql postgresql postgresql-performance sql-limit

如果查询的实际结果会加入大量数据(例如,当searchterm很短或频繁的城市名称时),那么限制带有限制的查询输出不会改善执行时间导致糟糕的表现:

enter image description here

但是,如果要加入的数据很少,执行时间显然很长:

enter image description here

现在,如果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;

0 个答案:

没有答案