gpt4 book ai didi

postgresql - "SELECT count(dinstinct d.domain) WHERE r.rdns LIKE ' %' | r.rdns"的正确说法?

转载 作者:行者123 更新时间:2023-11-29 13:27:58 26 4
gpt4 key购买 nike

我有两个表:我们称它们为 dr。我想在表 r 中找到 d.domain 的数量,它们是 dns 字段的有效左锚定子字符串。我没有索引,r 有 10 亿行,而 d 有 9000 万行。如何编写查询?

PostgreSQL 版本为 9.3。

最佳答案

SELECT count(DISTINCT d.domain)
FROM d
WHERE EXISTS (
SELECT 1
FROM r
WHERE r.domain LIKE '%' || d.domain
);

EXISTS 有可能比 JOIN 更快,因为它是半连接。

我会在 d.domain 上创建一个 b-tree 索引,看看对其进行松散索引扫描是否有助于比 DISTINCT 更快地获取不同的域。参见 https://wiki.postgresql.org/wiki/Loose_indexscan

另见 https://wiki.postgresql.org/wiki/Reverse_string可能会加速后缀模式匹配。

关于postgresql - "SELECT count(dinstinct d.domain) WHERE r.rdns LIKE ' %' | r.rdns"的正确说法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30087772/

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