![](/img/trans.png)
[英]Is this the good practice(performance wise) to create multiple views on same table in 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.