gpt4 book ai didi

sql - Postgres 中的快速近似计数

转载 作者:行者123 更新时间:2023-11-29 11:32:22 25 4
gpt4 key购买 nike

我正在使用类似以下内容查询我的数据库 (Postgres 8.4):

SELECT COUNT(*) FROM table WHERE indexed_varchar LIKE 'bar%';

这个的复杂度是 O(N) 因为 Postgres 必须计算每一行。 Postgres 9.2 具有仅索引扫描,但不幸的是,升级不是一个选项。

但是,获得准确的行数似乎有些矫枉过正,因为我只需要知道以下三种情况中的哪一种是正确的:

  • 查询不返回任何行。
  • 查询返回一行。
  • 查询返回两行或更多行。

所以我不需要知道查询返回 10,421 行,只需要知道它返回多于两行即可。

我知道如何处理前两种情况:

SELECT EXISTS (SELECT COUNT(*) FROM table WHERE indexed_varchar LIKE 'bar%');

如果存在一行或多行,则返回 true,如果不存在,则返回 false。

关于如何扩展它以有效地涵盖所有三种情况有什么想法吗?

最佳答案

SELECT COUNT(*) FROM (
SELECT * FROM table WHERE indexed_varchar LIKE 'bar%' LIMIT 2
) t;

关于sql - Postgres 中的快速近似计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com