1
回答
pgsql 表达式索引的问题
华为云实践训练营,热门技术免费实践!>>>   

有个需求 ,做 URL 去重的, 主要是 用于 减少 数据 抓取时的重复抓取的 消耗

数据量 在 亿 级别吧,  而且 url 的 长度 又比较长, 所以 想做个  url 截取 前 50位 字符串 的索引

sql 如下: 


create table url(
id serial primary key,
href text 
)

create UNIQUE  index url_href on url(href)


insert into url select r, 
reverse('http://cz.58.com/bijibendiannao/21344265890186x.shtml?PGTID=14267543077580.5493437256664038&ClickID='|| r )
from  generate_series(1,5000000) as r


上面使用 全部的 字段的 索引 , 查询时 没有问题用到了索引, 改成 截取 字符串索引后 没有效果


CREATE UNIQUE INDEX last_100_url ON url (left(href,100));

select * from url where href like left(reverse('http://cz.58.com/bijibendiannao/21344265890186x.shtml?PGTID=14267543077580.5493437256664038&ClickID=5'),100)||'%'



请大神 指点,  截取 字符较长的 前 几十位作为索引 是否可行



举报
panmingguang
发帖于3年前 1回/209阅
顶部