2013-12-18 76 views
0

我有以下create語句:一個大表或歸兩個表中插入選擇性能

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, 
); 

但畢竟這我應該寫爲每個插入兩個查詢,並連接表中選擇查詢 是它降低性能或我可以,即使在這種情況下,一個查詢做呢?

+0

「太多列」是什麼? –

回答

2

如果所有這些信息都是特定於場地的,則應將其保存在一個表格中,而不是使用單獨的表格提供額外的信息。根據不同的類型,一個表格中最多可以有大約1600列。 (儘管你可能不應該!)儘量讓你的表代表你正在處理的實體 - venue_info並不是一個真正的特定事物。

儘管如果您有許多實體都具有需要相同詳細信息的地址,我可以在系統中看到有一個單獨的address表的參數。

1

我的意見。 無需細分,因爲該表僅包含所有地址細節&。爲什麼我們分解表結構,goes here。 希望,這個鏈接可能會幫助你。