mysql全文索引只有一种方法来确定词数这一相关性。 索引不会记录匹配单词在字符串中的位置。 此外,全文索引与数据量有很大关系,只有在全文索引全部在内存中时性能才会更好,因此,如果全文索引太大而无法全部读取到内存中,性能就会更差。 这些例子包括:
修改第1、1段文本中的100个单词时,索引需要100次。
2、全文索引长度对性能的影响也很大
3、全文索引生成更多的片段,需要更多的优化表操作
全文索引优化程序的工作也不尽如人意。 例如,
如果sql包含匹配代理,并且索引列具有全文索引,则mysql始终使用全文索引。 在这种情况下,如果有其他索引,mysql也并不比该索引性能高。
. wherematch(content ) against )‘high performance’(and author=123;
在这种情况下,如果author列具有常规索引,而content列具有全文索引,则mysql将使用全文索引而不是常规索引,从而降低查询的效果。
或者,可以将author列添加到全文索引中,为author列添加不常见的前缀,并将带前缀的单词放置在另一列filter中进行维护。 这样可以扩展全文索引以包含filter列。 sql :
. wherematch(content,filter ) against )‘highperformanceauthor _ id _ 123’inbooleanmode’;
这假设author列具有高选择性。 mysql基于author过滤将数据限制在较小的范围内,并匹配关键字。 如果author本身的选择性较低,则此替代方案会比原始方案更糟。