簡體   English   中英

將多個longtext放入同一表mysql中的一種好習慣嗎?

[英]Is that a good practice to put several longtext into a same table mysql?

我正在創建一個包含多個長文本行的mysql表。 我希望很多用戶輸入很多文本。 我應該將它們分別分成不同的表還是將它們放在一個表中? 我擔心速度,查詢結果時會影響速度嗎?將來是否要傳輸數據呢? 我正在使用InnoDB,還是應該使用Myisam?

CREATE TABLE MyGuests (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  diet longtext NOT NULL,
  run longtext NOT NULL,
  faith longtext,
  apple longtext
);

使用此數據庫布局時,對速度的主要擔心是查詢是否為SELECT * ,而頁面僅使用其中一個字段。 (這是一個非常常見的性能下降器。)此外,如果您打算在可用文本等的列表中每頁顯示多個文本,則可能需要單獨的描述列(包含完整文本的截短版本)文本(如果沒有其他內容),則僅獲取這些文本,而不是僅獲取完整文本然后在PHP中截斷文本。

如果您打算提供搜索功能,則絕對應該使用全文索引,以保持性能清晰。 如果您的MySQL版本是5.6.4或更高版本,則可以同時使用InnoDB和MyISAM進行全文搜索。 否則,只有MyISAM在早期版本中提供該功能。

您還可以在多表合一的表和每個表的單獨表之間進行第三種選擇,這可能是一種選擇,假設您將來可能最終會添加更多文本類型。 那是:

有第二個表,該表引用第一個表的ID,一個列(ENUM效率最高,但是只要您對其進行索引,實際上是一個邊際問題),它指示文本的類型(飲食,運行等),以及包含文本的單個longtext列。

這樣一來,您以后就可以毫不費力地添加更多文本類型,而無需對表布局(或代碼)進行更生動的編輯,而且僅獲取特定類型的文本也很簡單。 結合了主條目表(也可能包含一些相關的元數據,如作者ID,條目日期等)和文本的索引連接不應成為性能問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM