引擎
- MyISAM
- InnoDB
- MEMORY
MyISAM:它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
MyISAM的表还支持3种不同的存储格式:
- 静态(固定长度)表
- 动态表
- 压缩表
静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。
动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁到更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。
压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。
InnoDB:存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。
memory:使用存在内存中的内容来创建表。
索引
添加方式:
- 主键索引:ALTER TABLE
table_nameADD PRIMARY KEY (column) - UNIQUE(唯一索引) :ALTER TABLE
table_nameADD UNIQUE (column) - INDEX(普通索引): ALTER TABLE
table_nameADD INDEX index_name (column) - FULLTEXT(全文索引): ALTER TABLE
table_nameADD FULLTEXT (column) - 多列索引:ALTER TABLE
table_nameADD INDEX index_name (column1,column2,column3)
- 普通索引:不附加任何限制条件,可创建在任何数据类型中
- 唯一性索引:使用unique参数可以设置索引为唯一性索引,在创建索引时,限制该索引的值必须唯一,主键就是一种唯一性索引
- 全文索引:使用fulltext参数可以设置索引为全文索引。全文索引只能创建在char、varchar或text类型的字段上。查询数据量较大的字符串类型字段时,效果明显。5.6版本后innoDB也同样支持
- 单列索引:在表中单个字段上创建的索引,单列索引可以是任何类型,只要保证索引只对应一个一个字段
- 多列索引:在表中多个字段上创建的索引,该索引指向创建时对应的多个字段
- 空间索引:使用spatial参数可以设置索引为空间索引,空间索引只能建立在空间数据类型上比如geometry,并且不能为空,目前只有MyISAM存储引擎支持
