【发布时间】:2009-04-18 21:02:55
【问题描述】:
我在 MySQL 数据库中有一个 TEXT 列。该应用程序就像一个博客,col 包含“帖子”的正文。我将在此列上进行大量复杂的布尔搜索。
MySQL 文档说您需要为 InnoDB 表的最大长度为 767 字节的 TEXT 列设置索引长度。
我应该将其设置为最大长度吗?比那个少是不是更好?
【问题讨论】:
标签: mysql
我在 MySQL 数据库中有一个 TEXT 列。该应用程序就像一个博客,col 包含“帖子”的正文。我将在此列上进行大量复杂的布尔搜索。
MySQL 文档说您需要为 InnoDB 表的最大长度为 767 字节的 TEXT 列设置索引长度。
我应该将其设置为最大长度吗?比那个少是不是更好?
【问题讨论】:
标签: mysql
这取决于你将拥有什么。
我从您的问题中怀疑您正在想象列上的索引可以做它不能做的事情。常规索引不是全文索引,不能用于查找单词或除前缀之外的任何子字符串匹配项。数据库索引用于查找精确值,或仅用于查找某个范围的值 - 它们不能执行任意匹配。
假设您打算将索引用于它可以做的事情,那么长度应该是最短的长度,让您有足够的特异性,您可以在不阅读太多行的情况下找到所需的行。多长时间取决于您的表的内容,例如,如果您的表有许多具有相同前缀的行,则索引需要比类似的前缀长,以避免将它们放入相同的索引条目 - 这意味着它们都需要被搜索。
【讨论】:
如果您正在执行“复杂的布尔搜索”,那么普通索引很可能对您没有任何用处。我想你可能会发现你需要full-text index。
【讨论】: