【问题标题】:How can I store and index very large text items without knowing the max data size如何在不知道最大数据大小的情况下存储和索引非常大的文本项
【发布时间】:2015-12-17 11:39:24
【问题描述】:

我是 MySQL 新手,最近我正在开发一个博客网站,但我面临的严重问题是如何在 MySQL 中存储大块文本数据。我正在考虑使用文本类型,但我认为 MySQL 不支持这种类型的 FULLTEXT 搜索,因此搜索结果可能需要大量的时间和资源。

是否有另一种方法可以在 MySQL 中存储可以快速搜索的大文本?

【问题讨论】:

  • 定义巨大?千兆字节?
  • I was thinking of using the type as Text but I think that MySQL doesn't support FULLTEXT search for this type according to doc Full-text indexes can be used only with InnoDB or MyISAM tables, and can be created only for CHAR, VARCHAR, or TEXT columns.
  • 我正在使用 InnoDB table ,但它不允许我为 Text Column 设置全文索引,但可以将全文设置为 varchar 列。
  • @Gunjan 你的mysql服务器是什么版本的?
  • 5.5.43-0是版本

标签: mysql full-text-indexing


【解决方案1】:

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

您可以使用VARCHAR(64000) 或一些此类数据类型来存储您的文本。这几乎适用于所有博客应用程序:可以进行全文搜索的 64K 文本是很多文本。比较一下,Shakespeare's HAMLET takes 188K 的整个文本将适合其中的三行。因此,您可以坚持YAGNI principle 并完成您的项目。

您可以轻松构建表格结构,以允许表格中包含全文的连续行。一个额外的列,如果不是 NULL,则意味着“此列继续具有特定 ID 的行中的文本”会很好。

但最好的办法仍然是让 FULLTEXT 索引适用于您想要的数据类型。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 2021-11-23
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多