嗯,我会非常直截了当--在我的应用程序中实现生日搜索时,我遇到了巨大的性能下降--我使用的是LIKE,这不是左锚式表达式(因为日期列格式看起来像YYYY DD),所以我不得不这么做(这个月--这一天),这个查询不能使用默认索引。
我发现了pg-trgm,这实际上非常棒,但是gist/gin_trgm_ops操作符不支持“日期”类型。您可能会说,如果我使用LIKE (我必须使用::varchar ),那么将日期作为列类型是没有意义的,但我希望在数据库中设置严格的内容,所以我请求您提供建议--是否有任何方法可以更快地处理日期,或者,如果有其他选择,可以在没有可怕的查询时间的情况下完成我的任务(进行生日搜索)?
发布于 2018-09-25 20:06:14
试试这样的索引:
create index idx_name on your_table(extract(month from birth_day), extract(day from birth_day));然后查询,例如:
select * from your_table
where
extract(month from birth_day) = 2 and extract(day from birth_day) = 20https://stackoverflow.com/questions/52505867
复制相似问题