一个大表或标准化的两个表插入选择性能



我有以下创建语句:

    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查询中的每个插入表和联接表编写两个查询这会降低性能吗?还是即使在这种情况下,我也可以用一个查询来完成?

如果所有这些信息都是特定于场地的,则应将其保存在一个表中,而不是单独的表中包含额外信息。根据类型的不同,一个表中最多可以有1600列。(尽管你可能不应该这样做!)尽量让你的表代表你正在处理的实体——venue_info实际上并不是一个特定的东西。

尽管我可以看到在您的系统中有一个单独的address表的论点,如果您有许多实体,它们的地址都需要相同的详细信息。

我的看法。不需要细分,因为该表包含所有地址详细信息&仅此而已。我们为什么要分解表的结构,从这里开始。希望,这个链接可能会帮助你。

最新更新