django - 优化 Django 文本字段查找
问题描述
我有一个用于存储文本对象的简单模型:
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')
优化这些查询的最佳索引解决方案是什么?
我知道全文搜索是另一种选择。但是,我不需要复杂的搜索功能。
解决方案
Postgres 10hash index
使文本查找查询非常快。所以,我添加了这个简单的索引:
CREATE INDEX text_hash ON text_table USING hash(content);
这个索引优化了文本选择查询,而我的 python 代码没有任何变化。
推荐阅读
- android - 从 JSON Android 添加日历事件
- angular - d3 规模与打字稿
- python - plotly 基本示例显示 jupyter 实验室中没有绘图
- c++ - c ++,当我从另一个类访问特定类的函数时,它们不会返回我更新的值
- javascript - 在提交页面上刷新到网页上的某个点?
- android - 在 kotlin 中创建常量文件的好习惯是什么
- gradle - 在 gradle 中导入 maven bom 时遇到问题
- mysql - 如何在多个 MySQL 服务器之间划分 CRUD 操作?
- azure - Azure APIM - 我如何请求/发布。我想阻止某些字符并允许少数?
- node.js - 如何将列表作为节点js中的列写入csv文件?