我有一种情况,我必须根据提供的参数对数据库进行全文搜索。 因此,假设 first_name 是否提供,我只是在做查询:
where(unaccent(first_name) ilike %{params[:first_name]}%
如果 last_name 仅提供了以下一项:
where(unaccent(last_name) ilike %{params[:last_name]}%
如果两者都提供,那我就在做:
where(unaccent(first_name) ilike %{params[:first_name]}% AND
where(unaccent(last_name) ilike %{params[:last_name]}%
请注意,还有3个类似的字段。
我知道我可以为每个字段添加GIN
索引并很快地使用它,但这肯定会增加存储空间并减慢其他操作的速度,所以我不太喜欢它。 / p>
有什么建议可以使它更快,更优化,但又不减慢其他部分的速度。