【发布时间】:2011-05-03 21:26:25
【问题描述】:
我使用 python/django 作为编程语言/框架。我需要知道的完全是关于 postgresql 和索引...
对于使用 django 的人来说,可能知道 Content Type 和 Django Admin Log。但很快,管理员日志正在记录用户操作。我还使用它来记录站点内执行的所有操作。所以它有 1.000.000+ 条记录。我使用 sql 查询来过滤结果,到这里就可以了……
问题是,我使用两个字段从不同的表中选择数据。其中之一是,内容类型,它存储了相关的数据库表信息和字段被索引...
其他字段是,object id,里面存放的是相关对象的id,字段类型是varchar,字段不被索引...
使用示例是:
Select from django_admin_log where content_type_id=15 and object_id="12343545";
由于 content_type_id=15 点我的 blog_texts 表和相关对象的 id 是 12343545,我可以很容易地得到相关数据...
但是object_id没有被索引,并且表有1.000.000+条记录,像我上面写的查询需要很多执行时间。
在 object_id 中使用索引有什么好处和坏处。利大于弊吗?
更新:我没有关于管理日志表的更新。它只记录所有用户操作...每天将 40.000-45.000 条记录插入表中。并且系统在一天的 2/3 时间里真的很忙,大约 15-16 小时(从早到晚)。因此,在上午 8 点到晚上 11 点期间插入了 45.000 条记录...
那么从这个角度来看,如果我创建索引,会不会导致数据库过多的过载?
更新 2:还有一个问题。另一个包含 2.000.000 多条记录且带有布尔字段的表。字段类似于“将其显示”,它与其他过滤条件一起使用。为这样的布尔字段创建索引是否合乎逻辑。
第二个条件是,在包含 1.000.000 条记录的表中同时索引布尔值和日期时间字段...
对这两个条件使用索引好不好?
【问题讨论】:
标签: indexing postgresql