把事情简单化!严重地。
除非您有绝大多数 255 个字符或更短的文本项,否则只需使用TEXT
或LONGTEXT
。花时间用文本做有趣的事情,而不是摆弄复杂的数据结构。立即完成您的项目;后期优化。
磁盘驱动器和 RAM 变得比您的时间快得多。
如果您的应用程序要求绝对需要您使用 varchar 数据,因为它的简洁性和可搜索性,而不是文本数据,您可以执行以下操作。
创建一个article
表格,每篇文章一行。它将包含管理文章所需的所有内容,包括标题、作者和article_id
.
创建第二个表,名为article_text
. 它可能有四列。
article_id foreign key to article table.
language a language code, if you happen to store translations of articles
ordinal a sequence number
textfrag varchar(255) part of the text.
article_text
将每篇文章的文本存储在具有升序ordinal
值的一系列行中。每个textfrag
文本最多可容纳 255 个字符。要检索文章的文本,您将使用这样的查询。
SELECT textfrag
FROM article_text
WHERE language = 'en_US' /* or whatever */
AND article_id = 23456 /* or whatever */
ORDER BY ordinal
然后,您将获取一堆行,连接项目的内容textfrag
,并且您的文章没有有效长度限制。如果您创建一个包含所有字段的索引,您的检索时间会非常快,因为所有检索都来自索引。
(article_id, language, ordinal, textfrag)
如果您尽最大努力在单词边界处将文本拆分成片段,并使用 MyISAM,并使用 FULLTEXT 索引,您将获得一个非常有效的全文搜索系统。