我有一个用于存储文本对象的简单模型:
class Text(models.Model):
content = models.TextField()
我需要content
字段唯一。因此,我在其上创建了一个自定义的唯一索引:
CREATE UNIQUE INDEX text_md5 ON text_table (md5(content));
现在,我查询选择特定的行:
Text.objects.get(content='sample text.')
Text.objects.filter(content__in=['text1', 'text2'])
而且它非常慢。我希望postgres
使用其内容md5查找文本对象。在Django中最优雅的方法是什么。
此外,我想使用contains
查询的LIKE
过滤器查询此字段:
Text.objects.get(content__contains='text')
用于优化这些查询的最佳索引解决方案是什么?
我知道全文搜索是另一种选择。但是,我不需要复杂的搜索功能。
答案 0 :(得分:0)
Postgres 10 hash index
使文本查询变得非常快。所以,我添加了这个简单的索引:
CREATE INDEX text_hash ON text_table USING hash(content);
此索引优化了文本选择查询,而我的python代码没有任何变化。