我有一个postgresql数据库,其中包含大约5000万个地址字符串条目。字符串示例是
NIAID, Opportunist Infect Res Branch, Treatment Res Programs, Div Aids, Bethesda, MD USA
PRINCETON UNIV,DEPT PSYCHOL,PRINCETON,NJ 08544
等
现在我必须检查地址是否与大约30,000个正则表达式的列表相匹配。我还需要知道哪个正则表达式匹配。正则表达式的例子是
%umass mem med ctr worcester%worcester%ma%
%darnnouth%
这当然是postgres的'LIKE'格式。由于正则表达式匹配不能利用索引(不管怎么说,我已经索引了字段varchar_pattern_ops),这个操作的总运行时间将是大约30000x50万。
如果存在任何可以帮助我加快进程的python库,我也可以使用python进行正则表达式匹配。
感谢您的帮助!
答案 0 :(得分:1)
出了什么问题:
CREATE TABLE regex (
regex text primary key
);
SELECT * FROM my_table
JOIN regex ON mytextfield like regex;