gpt4 book ai didi

SQL 优化 - 字符串中的字数统计 - Postgresql

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

我正在尝试使用 Postgresql 上某个字段中的字数来更新一个大表(大约 100 万行)。此查询有效,并设置 token_count 字段计算表 my_tablelongtext 中的单词(标记):

UPDATE my_table mt SET token_count = 
(select count(token) from
(select unnest(regexp_matches(t.longtext, E'\\w+','g')) as token
from my_table as t where mt.myid = t.myid)
as tokens);

myid 是表的主键。\\w+ 是必需的,因为我想计算单词数,忽略特殊字符。例如,A test 。 ; ) 将返回基于空格的计数 5,而 2 是正确的值。问题是它非常慢,2 天时间不足以完成 100 万行。你会做什么来优化它?有没有办法避免连接?

如何使用 limitoffset 将批处理分成 block ?

感谢您的任何提示,

乐龙

更新:我测量了 array_split 的性能,无论如何更新都会很慢。因此,也许解决方案包括将其并行化。如果我从 psql 运行不同的查询,只有一个查询有效,其他查询等待它完成。如何并行更新?

最佳答案

您是否尝试过使用 array_length

UPDATE my_table mt
SET token_count = array_length(regexp_split_to_array(trim(longtext), E'\\W+','g'), 1)

http://www.postgresql.org/docs/current/static/functions-array.html

# select array_length(regexp_split_to_array(trim(' some long text  '), E'\\W+'), 1);
array_length
--------------
3
(1 row)

关于SQL 优化 - 字符串中的字数统计 - Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197929/

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