POSTGRESQL分析表性能的有效方法

时间:2010-09-15 21:28:41

标签: sql ruby-on-rails postgresql

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

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

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

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

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

1 个答案:

答案 0 :(得分: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';