MySQL中的索引大小

时间:2010-04-08 12:21:41

标签: mysql indexing

我刚开始研究MySQL数据库的优化问题。从我正在阅读的内容来看,索引似乎是一个好主意 - 所以我想在VARCHAR列的一个列上使用MyISAM引擎创建一个索引。

从我正在阅读的内容中,我了解索引的大小限制为1,000字节。但是,VARCHAR字符大小为3个字节。这是否意味着如果我想用50行索引VARCHAR列,我需要一个6个字符的索引前缀? (每个字符1,000字节/ 50行/ 3字节= 6.66)

如果是这样,那似乎有点复杂 - 这就是为什么我质疑我的理解。您只能使用1个字符的前缀在VARCHAR列中索引333行,这似乎很奇怪。

我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

  

根据我的阅读,我理解索引的大小限制为1000字节。

索引密钥长度仅限1000 MyISAM字节,767 InnoDB字节(每列)。

这意味着您无法在UTF8表中对单个333列的索引超过MyISAM个字符长(在计算最大索引大小时,MySQL会假设{{每个字符1}}个字节,但实际长度可能要小得多)

您可以根据需要创建任意数量的索引记录。

答案 1 :(得分:0)

我认为它意味着varchar的宽度。如果索引最大大小为1000字节且varchar长度为3个字节,那么最大可索引大小将为1000/3。