1

我创建的网站有“事件”。事件有标题、日期和相关人员的用户 ID。事件可以是关注某人、创建新帖子等。我正在考虑将所有事件存储在一个表中,但我可以看到它很快变得非常大。

我做对了吗?例如,当我需要在表中搜索与某个用户有关的事件时,这会对系统造成多大的影响?我可以以某种方式优化它吗?

4

3 回答 3

1

您将在 WHERE 子句中最常使用的列上添加索引,例如,如果您经常选择与某个用户相关的所有事件,则应在 user_id 列上创建索引。

http://www.postgresql.org/docs/9.1/static/sql-createindex.html

于 2012-06-16T03:54:11.283 回答
0

只要该表中的数据是规范化的,就应该没问题。如果您发现对该表的读取查询速度变慢,您可以为某些列添加索引,但您应该记住,这会减慢对该表的写入速度。

如果你发现性能太慢,你可以切换到使用一些对大表进行了更好优化的NoSQL数据库。

于 2012-06-16T04:01:57.883 回答
0

如果表真的很大,您可以使用分区: http ://www.postgresql.org/docs/9.1/static/ddl-partitioning.html 但您必须选择一个好的分区键 - 好的候选者是:

  • 事件时间戳
  • 事件类型
  • 用户身份
于 2012-06-16T19:34:15.163 回答