用列的前缀代替整个列作为索引key,当前缀长度合适时,可以做到既使得前缀索引的选择性接近全列索引,同时因为索引key变短而减少了索引文件的大小和维护开销
缺点不能用于ORDER BY和GROUP BY操作
也不能用于Covering index(即当索引本身包含查询所需全部数据时,不再访问数据文件本身)
InnoDB主键选择与插入优化如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键
InnoDB使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上
这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点)
如果使用非自增主键,每次插入近似随机,容易引起数据的移动,重新读目标页面,碎片也多了,虽然也可以用OPTIMIZE TABLE重建优化,但麻烦啊