postgresql 全文检索(to_tsvector)

like查询效率低下

对于相对较大的表数据查询,使用 like 会降低查询速度,各位可以试一下(仅仅是优化,目前在学习缓存)
如插入200万条数据
create table test(id int4,name text)

insert into test(id,name)
select r ,r||‘_tans’ from generate_series(1,2000000)r

select * from test where name like ‘%_tans’ 耗时700多毫秒(印象里是这样,博主比较懒哈哈)

解决方案

建立索引
使用to_tsvector(‘english’,columnname)
create index tttt on test using gin(to_tsvector(‘english’,name))

走索引

select * from test where to_tsvector(‘english’,name) @@ to_tsquery(‘english’,‘1_tans’)
@@指包含 因为建立索引的时候指明了语言,所以查询的时候也要指明语言,否则不会使用索引

不走索引

select * from test where to_tsvector(name) @@ to_tsquery(‘1_tans’)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: postgresql中的to_char函数是将日期、时间、数字等数据类型转换为指定格式的字符串的函数。它的语法为:to_char(expression, format),其中expression是要转换的值,format是转换的格式。to_char函数可以用于将日期、时间、数字等数据类型转换为各种格式的字符串,如年月日、时分秒、货币格式等。 ### 回答2: postgresql中的to_char函数用于将任意数据类型转换为字符串形式。该函数可以接受两个参数:待转换的值和转换格式。 to_char函数的第一个参数可以是数字、日期、时间、时间间隔、布尔值等任意数据类型。函数会根据转换格式将其转换为字符串。 转换格式是to_char函数的第二个参数,用于定义待转换值的输出格式。转换格式必须是一个字符串,可以包含特定的占位符和修饰符来指定输出的格式。例如,'YYYY-MM-DD'表示输出日期的年份、月份和日期,以连字符分隔。 to_char函数的常见用法包括将日期时间格式化为特定的字符串形式、将数字保留指定的小数位数或格式化为货币形式。例如,可以使用to_char函数将日期格式化为'YYYY-MM-DD',将小数保留两位小数位,或者将数字格式化为货币形式(前面有货币符号、千位分隔符等)。 这个函数在SQL查询中非常有用,可以对数据进行格式化,使其更直观和易于理解。同时,to_char函数还可以用于数据导出、报表生成等场景,提供更友好的显示效果。 ### 回答3: to_char是PostgreSQL中的一个函数,用于将数字、日期、时间和其他数据类型转换为字符串格式。 to_char函数的语法如下: to_char(expression, format) expression表示要转换的数据,可以是数字、日期、时间或其他数据类型。 format表示转换的格式,可以是一种特定的日期时间格式,也可以是自定义的格式。 通过to_char函数,可以将数字转换为指定格式的字符串。 例如,将数字1234.56转换为货币格式的字符串: SELECT to_char(1234.56, 'FM999G999D99'); 结果为:1,234.56 通过to_char函数,还可以将日期和时间类型转换为指定格式的字符串。 例如,将当前日期转换为YYYY-MM-DD格式的字符串: SELECT to_char(current_date, 'YYYY-MM-DD'); 结果为:2022-01-01 to_char函数也可以用于其他数据类型的转换,比如将布尔类型转换为字符串。 例如,将布尔值TRUE转换为字符串: SELECT to_char(TRUE, '9999'); 结果为:1 总之,to_char函数是PostgreSQL中非常实用的函数,可以将不同类型的数据转换为字符串,并且可以指定转换的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值