gpt4 book ai didi

postgresql - 创建用于模式匹配的运算符类,如 text_pattern_ops

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

我在使用自然排序('1' < '2' < '10' < '11' 等)的文本数据类型上创建了自己的比较运算符,使用我的新运算符 #<# , #<=# , #>##>=# .

现在我将它们放入一个运算符类中,以便能够在它们上创建索引,如下所示:

CREATE OPERATOR CLASS text_natsort_ops
FOR TYPE text USING btree AS
OPERATOR 1 #<#,
OPERATOR 2 #<=#,
OPERATOR 3 =,
OPERATOR 4 #>=#,
OPERATOR 5 #>#,
FUNCTION 1 bttext_natsort_cmp(text, text);

但是,当我使用新的 text_natsort_ops 创建索引时, 这不用于涉及 like 的查询因为它是在 text_pattern_ops 时完成的被使用。

如何声明我的运算符类以允许 like使用我的索引?

更新:

以上似乎有效,所以该问题无效。我真正的问题是我使用了如下查询:

select *
from mytable
where number like 'edi%'
order by number using #<#
limit 10

我还有另一个使用 text_pattern_ops 的索引,它被规划者选择,因为它似乎工作得更快。但是,由于 order by ... using只有使用我的新操作的索引才有用...其他索引返回太多结果,我需要 limit 子句可用于索引扫描。

最佳答案

https://github.com/dimitri/prefix 查看 PostgreSQL 前缀扩展他们也定义了自己的 OPERATOR CLASS 并告诉 PostgreSQL 为某些运算符使用特殊的 GIST 索引,也许您需要类似的东西?

CREATE OPERATOR CLASS gist_prefix_range_ops DEFAULT FOR TYPE prefix_range USING gist ...

关于postgresql - 创建用于模式匹配的运算符类,如 text_pattern_ops,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815690/

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