1.关于自动增长
myisam 引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。
innodb 引擎的自动增长咧必须是索引,如果是组合索引也必须是组合索引的第一列。
2.关于主键
myisam 允许没有任何索引和主键的表存在,
myisam 的索引都是保存行的地址。
innodb 引擎如果没有设定主键或者非空唯一索引,就会自动生成一个 6 字节的主键 (用户不可见)
innodb 的数据是主索引的一部分,附加索引保存的是主索引的值。
3.关于 count () 函数
myisam 保存有表的总行数,如果 select count(*) from table; 会直接取出出该值
innodb 没有保存表的总行数,如果使用 select count(*) from table; 就会遍历整个表,消耗相当大,但是在加了 where 条件后,myisam 和 innodb 处理的方式都一样。
4.全文索引
myisam 支持 FULLTEXT 类型的全文索引
innodb 不支持 FULLTEXT 类型的全文索引(5.6 开始已经支持了),但是 innodb 可以使用 sphinx 插件支持全文索引,并且效果更好。(sphinx 是一个开源软件,提供多种语言的 API 接口,可以优化 mysql 的各种查询)。
5.delete from table
使用这条命令时,innodb 不会从新建立表,而是一条一条的删除数据,在 innodb 上如果要清空保存有大量数据的表,最 好不要使用这个命令。(推荐使用 truncate table,不过需要用户有 drop 此表的权限)。
6.索引保存位置
myisam 的索引以表名 +.MYI 文件分别保存。
innodb 的索引和数据一起保存在表空间里。
MySQL 中的索引有几种
一、普通索引
最基本的索引,只是加快了查询速度。
二、唯一索引
与普通索引类似,不同的是:索引的列值必须唯一,但允许有空值,也就是 null,如果是组合索引,则列值的组合必须是唯一的。
三、主键索引
即我们常用的主键 id, 它是一种特殊的唯一索引,不允许有空值,一般在建表时同时创建主键索引。
特点:
1)一张表只有一个主键索引
2)主键要求自增
四、组合索引
即多个字段建立的索引
五、全文索引
fulltext
myisam 引擎支持
六、外键
建立外键需要注意的事项:
1)表引擎必须一样
2)字段类型必须一样
3)长度必须一样
4)存储范围必须一样
5)约束字段必须在被引用的字段中出现过