【发布时间】:2013-04-27 20:49:37
【问题描述】:
我有一个有列的表:
| last_name | varchar(1000) | NO | MUL | NULL | |
我在此列上创建了一个索引:CREATE INDEX lastname_idx ON employees(last_name);
当我为SELECT 执行EXPLAIN 时,last_name 上有一个WHERE 条件,我看到:key_len = 769。
如果我没记错的话,key_len 会显示索引值中使用的字节。
由于索引在last_name 上,即varchar(1000) 为什么是key_len=769?
不应该是1000吗?
【问题讨论】:
-
如果我在 InnoDB 表(不是 MyISAM 表)中创建这样的索引,我会收到警告:
Warning | 1071 | Specified key was too long; max key length is 767 bytes,这可能与此有关... -
@Wrikken:看来你是对的。没有注意到警告。
标签: mysql optimization indexing query-optimization sql-execution-plan