Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
优化Django文本字段查找_Django_Postgresql_Django Models - Fatal编程技术网

优化Django文本字段查找

优化Django文本字段查找,django,postgresql,django-models,Django,Postgresql,Django Models,我有一个存储文本对象的简单模型: class Text(models.Model): content = models.TextField() 我需要内容字段是唯一的。因此,我在其上创建了一个自定义唯一索引: CREATE UNIQUE INDEX text_md5 ON text_table (md5(content)); 现在,我查询选择特定行: Text.objects.get(content='sample text.') Text.objects.filter(conten

我有一个存储文本对象的简单模型:

class Text(models.Model):
    content = models.TextField()
我需要
内容
字段是唯一的。因此,我在其上创建了一个自定义唯一索引:

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做这件事最优雅的方式是什么

另外,我想用
包含
过滤器查询此字段,该过滤器类似于
查询:

Text.objects.get(content__contains='text')
优化这些查询的最佳索引解决方案是什么


我知道全文搜索是另一种选择。但是,我不需要复杂的搜索功能。

Postgres 10
哈希索引
使文本查找查询非常快速。因此,我添加了这个简单的索引:

CREATE INDEX text_hash ON text_table USING hash(content);

此索引优化了文本选择查询,而不会对我的python代码进行任何更改。

您在那里存储的是什么类型的文本?你确定要文本字段(blob)而不是字符字段(varchar)?我要存储短文本和长文本内容,大约1到1000个单词。