首页 > 解决方案 > 全文搜索与索引检查完全相同的文本

问题描述

我有这么长的文本,超过了索引的字节限制。文本没有任何空格。它是 dbname 和 table_name 之类的组合。

我将只查询完全相同的检查, select * from table where column='text' 或者如果我使用全文搜索,它可能会像这样。 select * from table where Match (column) Against(text)

我不知道以下两个选项之间哪个最好。我将text_example = '{dbName}/{tableName}'用于解释,但实际上,它是至少 5 种字符串的组合。

选项1。使用全文搜索

选项 2。使用索引 要使用索引,我必须将 text_example 拆分为 5 种类型。然后为每种类型创建索引。

create table info (
  dbName text,
  tableName text,
  index dbIdx (dbName),
  index tableIdx (tableName)
);

插入查询会经常。

在这种情况下,哪一个是存储的最佳方面?性能怎么样?

或者有什么好的方法来改进带有这么长文本的选择查询?仅供参考,我使用 mysql 8.0

标签: mysqlindexingfull-text-searchfull-text-indexingfulltext-index

解决方案


  • 标点符号,例如/,分隔“单词”的目的FULLTEXT
  • “dbname/tablename”不是很长的文本——可能限制为 129 个字符。(所以,我不明白“索引的字节数限制”来自哪里。)
  • col = 'text'检查整个列;MATCH..AGAINST检查列中的“单词”。也就是说,他们做不同的事情。

请澄清真正的文本是什么样的,真正的查询是什么样的。然后我们可以就FULLEXTvs提供建议BTREE


推荐阅读