我有以下创建声明:
CREATE TABLE venues
(
id integer NOT NULL,
fs_id varchar,
name varchar,
phone varchar,
address varchar,
latitude double precision,
longitude double precision,
city varchar,
state varchar,
country varchar,
category_fs_id varchar,
category_name varchar,
CONSTRAINT pk_venue_id PRIMARY KEY (id)
);
我可以通过一个查询获得我想要的内容,但是列太多了,所以我可以再创建一个表:
CREATE TABLE venues
(
id integer NOT NULL,
fs_id varchar,
name varchar,
category_fs_id varchar,
category_name varchar,
venue_info_id integer,
CONSTRAINT pk_venue_id PRIMARY KEY (id)
CONSTRAINT fk_venue_info_id FOREIGN KEY (venue_info_id)
REFERENCES venue_info (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
CREATE TABLE venue_info
(
phone varchar,
address varchar,
latitude double precision,
longitude double precision,
city varchar,
state varchar,
country varchar,
);
但在此之后我应该为select查询中的每个insert和join表写两个查询 是否会降低性能,或者即使在这种情况下我也可以使用一个查询执行此操作?
答案 0 :(得分:2)
如果所有这些信息都是针对场地的,那么您应将其保存在一个表格中,而不是单独使用表格提供额外信息。根据类型,一张表中最多可包含1600列。 (虽然你可能不应该!)尽量让你的表代表你正在处理的实体 - venue_info
并不是一个特定的东西。
虽然我可以看到在你的系统中有一个单独的address
表的论据,如果你有许多实体都有需要相同细节的地址。
答案 1 :(得分:1)
我的意见。 由于该表包含所有地址详细信息,因此无需细分。而已。为什么我们分解表结构,goes here。 希望,这个链接可以帮助你。