如何在不知道最大数据大小的情况下存储和索引非常大的文本项

How can I store and index very large text items without knowing the max data size

我是 MySQL 的新手,最近我在博客网站上工作,但我面临的严重问题是如何在 MySQL 中存储大块文本数据。我正在考虑将类型用作文本,但我认为 MySQL 不支持对此类型进行全文搜索,因此搜索可能会花费大量时间和资源。

是否有另一种方法可以在 MySQL 中存储大文本并且可以非常快速地进行搜索?

从 5.6 版开始,MySQL 确实在 InnoDB 和 MyISAM 访问方法 table 中支持 TEXT 数据类型的 FULLTEXT 索引。如果无法正常工作,请检查您的 MySQL 服务器版本。

您可以使用 VARCHAR(64000) 或类似的数据类型来存储您的文本。这将适用于几乎所有博客应用程序:64K 的文本可以进行全文搜索,这是很多文本。比较 Shakespeare's HAMLET takes 188K, and so would fit in three of these rows. Therefore, you could adhere to the YAGNI principle 的全文并完成您的项目。

您可以轻松地设置 table 结构,以允许 table 中包含全文的连续行。一个额外的列,如果不是 NULL,则意味着 "this column continues the text in the row with a certain ID" 会很好用。

但您最好的选择仍然是让 FULLTEXT 索引在您需要的数据类型上工作。

编辑 如果此时无法升级旧版本的 MySQL 服务器,请使用 VARCHAR(64000)。稍后,当您可以升级时,您可以更改列以更改为 TEXT。