2010-12-21 22 views
0

我是新來的MySQL,並有關於我的新數據庫的MySQL數據庫結構的選擇。我可以有:mysql很多文本列或整數列和一個新表?

表1:(ID,文本1,文本2,文字3,文本4,高達text7)

OR

表1:(ID,INT1,INT2,INT3,...最多INT7)在國際價值鏈接到表2唯一索引

表2:(ID2,文本)

因此,基本上,我應該把在列中的所有文本在一個表或SAPARATE和存儲索引值在1臺並在第二個表中的文本數據... 查詢將被給出ID碼,以重新轉字符串文本1至文本7.表會很大,大約〜百萬的ID(如果使用方法2將擁有約7萬個條目意味着表2)

其方法是在你看來得更快?

EDIT1:每個文本的長度爲250個信字符。 編輯2:爲了澄清,我給了該ID,並且對該表的查詢將獲得該ID的全部7個文本項目。這是對錶格和唯一需要的唯一信息進行的唯一查詢。只需要知道哪個會更快使用。如果兩者都不,請提供更好的方法!

+0

嘿,這取決於選擇它們的方式(總是7個或每個獨立)。如果您需要在文本的字段上進行搜索,請使用第二個(一個索引規則所有數據)。這是我的意見。但我會使用第三個表(關聯)來從文本選擇到ID。 – 2010-12-21 18:07:40

回答

0

如果您不是基於文本進行查詢,不會產生任何速度差異。保持簡單,只需使用一張桌子。如果你不得不通過文本查詢,那麼你會想要改變它。

1

請提供更多信息,並告知我們您正在存儲的內容。

然而儘管如此,存儲在一個單一的記錄相同的「東西」不止一個關係型數據庫通常是錯誤的做法。你提出的解決方案都涉及將7件東西存儲在單個記錄中,因此它們都不會出現在一開始就是一個好的解決方案。

「正確」的解決方案(沒有任何特殊的條件下)將有一個表(在你的例子)9萬個條目。

你在想第二個解決方案,因爲有人建議給你,你應該在不同的行存儲他們的整數ID「正常化」的文本值?如果是這樣,我不認爲你已經完全明白他們的意思。指定的解決方案不規範化數據庫,它只是增加一個(不必要的)間接級別。

如果你絕對必須使用非規範化的解決方案,在一個記錄所有的字符串比整數ID的增加的複雜性更好。

+0

我在互聯網上看到,如果它有很多基於文本的列(如果我是絕對初學者,所以我不知道這是否屬實,但似乎有意義),它會更慢地瀏覽表格。因此,我假設整數列會很快。如果我基於唯一ID進行掃描,這是否有所作爲?我想這就是我真的應該問的問題了嗎? – David19801 2010-12-21 18:09:52