MySQL文本列的索引长度是多少?

时间:2009-04-18 21:02:56

标签: mysql

我在MySQL数据库中有一个TEXT列。该应用程序就像一个博客,col包含“帖子”的主体。我将在此列上进行大量复杂的布尔搜索。

MySQL文档说你需要为InnoDB表设置最大长度为767字节的TEXT列的索引长度。

我应该将它设置为最大长度吗?让它低于那个更好吗?

2 个答案:

答案 0 :(得分:17)

这取决于你将拥有它。

我怀疑你的问题是你在想象列上的索引可以执行它不能做的事情。传统索引不是全文索引,不能用于查找单词或除前缀之外的任何子字符串匹配。数据库索引仅用于查找精确值或一系列值 - 它们不能执行任意匹配。

假设您要使用索引来处理它可以执行的操作,那么长度应该是最短的长度,使您具有足够的特异性,您可以找到所需的行而无需读取太多的行。这需要多长时间取决于表的内容,例如,如果您的表有许多具有相同前缀的行,则索引需要比相似的前缀长,以避免将它们放入相同的索引条目 - 这意味着它们都需要被搜查。

答案 1 :(得分:5)

如果您正在进行“复杂的布尔搜索”,那么无论如何,普通索引都不会对您有任何用处。我想你可能会发现你需要一个full-text index