【问题标题】:POSTGRESQL Effective way to split table performance-wisePOSTGRESQL 在性能方面拆分表的有效方法
【发布时间】:2010-09-15 21:28:40
【问题描述】:

我在 postgress 中有一个用户表。 每个用户可以拥有从 0 到多个网站。

我知道每次从数据库中获取用户对象时都带上用户网站会浪费内存,当然我不知道用户将拥有多少个网站。

我可以有一个名为网站的表格,但我认为这可能会再次发生在我想在用户个人资料下添加的其他类型的列表中。

这个问题的最佳解决方案是什么?

注意:最好是指不会影响网站性能的解决方案。 仅供参考:该网站将在 ruby​​ on rails 3 上运行

【问题讨论】:

  • 对不起,我不够清楚。我不是在谈论分页而是存储附加到用户表的数据(在这种情况下是网站)。假设用户可以在他的个人资料中添加几个选项,例如:兴趣、网站、联系电话等。我不能只有一张桌子。我正在寻找理想的解决方案。

标签: sql ruby-on-rails postgresql


【解决方案1】:

你可以有这样的东西:

create table users (
  user_id serial primary key,
  username text not null unique
);
create table datatypes (
  datatype_id serial primary key,
  datatype text not null unique
);
create table data (
  user_id int not null references users(user_id),
  datatype_id int not null references datatypes(datatype_id),
  data text not null
);
insert into datatypes (datatype)
  values ('website','interest','contact_number');

然后将网站地址“example.com”添加到用户“testuser”:

insert into data (user_id, datatype_id, data)
  select user_id, datatype_id, 'example.com'::text as data
  from users, datatypes
  where username='testuser' and datatype='website';

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多