簡體   English   中英

MySQL:記錄存儲多個文本字段

[英]MySQL: Storage of multiple text fields for a record

一個沒有經驗的問題:

我需要將每個記錄大約10個未知長度的文本字段存儲到MySQL表中。 我希望該表的總行數不超過5萬行,但是速度很重要。 出於所有實際目的,數據庫操作將僅為SELECT(並且搜索將僅使用整數PK ID進行)。 我正在使用InnoDB。

換一種說法:

id | text1 | text2 | text3 | .... | text10

據我了解,MySQL會將文本存儲在其他位置,並在表本身上使用其自身的指示符,我想知道在給定數據存儲方式的基礎上是否存在任何基本性能隱憂? (即表中的幾個“子抓取”)。

謝謝。

本質上,您要問的是,這10個TEXT字段是否需要為檢索的每一行進行10次單獨的磁盤查找。 我不確定InnoDB是否會連續寫所有這些內容並能夠快速讀取它們,因此,對於大多數性能問題,最好的選擇是創建並運行一些簡單的測試,並找出其中的含義(除非有人來聲稱知道!)

需要注意的幾件事:

  • 由於您的表不是很大,並且您主要使用SELECT,因此可以只緩存數據。 InnoDB可以將實際數據存儲在其緩沖池中(與MyISAM不同)-因此,請嘗試將此值(innodb_buffer_pool_size)設置為足夠大以容納您的數據。
  • 如果您始終閱讀所有10列,並希望使用單個TEXT字段,則可以添加一些中間代碼,該代碼通過為每個字段加上前綴的字符數/字節數來處理將數據分為10個部分的過程。您將數據讀回去,就可以確切知道每個部分占用了多少空間。
  • 如果您采用上述方法,則可能需要使用更大的TEXT字段,例如MEDIUMTEXT或LONGTEXT。

您是要通過id (索引鍵)還是通過文本字段中的數據選擇記錄?

如果是前者,性能不應該成為問題。 如果是后者,請確保您索引要用於裝載的任何字段。

暫無
暫無

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

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