根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为 256 字节。大多数存储引擎有更高的限制。
在 MySQL 5.1 中,对于 MyISAM 和 InnoDB 表,前缀可以达到 1000 字节长。请注意前缀的限制应以字节为单位进行测量,而 CREATE TABLE 语句中的前缀长度解释为字符数。当为使用多字节字符集的列指定前缀长度时一定要加以考虑。
还可以创建 FULLTEXT 索引。该索引可以用于全文搜索。只有 MyISAM 存储引擎支持FULLTEXT 索引,并且只为 CHAR 、 VARCHAR 和 TEXT 列。索引总是对整个列进行,不支持局部(前缀) 索引。
?
也可以为空间列类型创建索引。只有 MyISAM 存储引擎支持空间类型。默认情况 MEMORY(HEAP) 存储引擎使用 hash 索引,但也支持 B- 树索引。
?
1. 搜索的索引列,不一定是所要选择的列。
? ? ? ?换句话说,最适合索引的列是出现在 WHERE 子句中的列,或连接子句中指定的列,而不是出现在 SELECT 关键字后的选择列表中的列 。
2. 使用惟一索引。
? ? ? ?考虑某列中值的分布。对于惟一值的列,索引的效果最好,而具有多个重复值的列,其索引效果最差。例如,存放年龄的列具有不同值,很容易区分各行。而用来记录性别的列,只含有 “ M ” 和 “ F ” ,则对此列进行索引没有多大用处(不管搜索哪个值,都会得出大约一半的行)。