问题描述
我有这么长的文本,超过了索引的字节数限制。 文本没有任何空格。它是 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 拆分为 5types。然后为每种类型创建索引。
create table info (
dbname text,tableName text,index dbIdx (dbname),index tableIdx (tableName)
);
通常会插入查询。
或者有什么好的方法可以改进带有这么长文本的选择查询? 仅供参考,我使用 MysqL 8.0
解决方法
- 标点符号,例如
/
,用于分隔“单词”以用于FULLTEXT
。 - "dbname/tablename" 不是很长的文本 -- 可能限制为 129 个字符。 (所以,我不明白“索引的字节数限制”从何而来。)
-
col = 'text'
检查整列;MATCH..AGAINST
检查列中的“单词”。也就是说,他们做不同的事情。
请说明真实文本是什么样子以及真实查询是什么样子。然后我们可以就 FULLEXT
与 BTREE
提供建议。