【问题标题】:full text search vs index to check exactly same text全文搜索与索引检查完全相同的文本
【发布时间】:2021-06-16 09:31:04
【问题描述】:

我有这么长的文本,超过了索引的字节限制。 文本没有任何空格。它是 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

【问题讨论】:

    标签: mysql indexing full-text-search full-text-indexing fulltext-index


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

    请说明真正的文本是什么样的以及真正的查询是什么样的。然后我们可以就FULLEXTBTREE 提供建议。

    【讨论】:

    • 这样的文本格式。 '{companyName}://{department}/{grade}/{user_id}/{nickname}' 我需要的唯一情况是 where person='{companyName}://{department}/{grade}/{user_id}/{nickname}' 在这种情况下哪个最好?全文与 btree
    • 如果这始终是结构并且您总是检查这 5 件事,那么针对 5 个 单独 列的 5 列 BTree 索引将胜出。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2019-09-22
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多