在存储来自IRC通道的用户消息的表messages
中,我有一个名为message
的character varying
列.有了聊天机器人,我允许用户搜索某个词被输入了多少次.这个术语可以是任何东西:一个字符、一个单词或多个单词.该表有大约1,500万行,查询时间可能会很长.
我使用以下查询来查找匹配term
个不区分大小写的所有子字符串:
select sum(array_length(string_to_array(LOWER(message), LOWER('term')), 1) -1) from messages;
该查询使用顺序扫描.当我set enable_seqscan = off;
的时候,它使用btree
索引,我也在桌子上有.该表也有一个三元组索引,但从未使用过.
您会从什么Angular 来提高查询性能?
我用的是Postgres 14.9