日期:2014-05-16  浏览次数:20656 次

联合索引的疑问
单个索引的b树结构的节点是一个key[]和一组指针*pointer[],key[1],key[2]储存关键字,比如表中有个字段a建成索引,有两行数据aa,bb,那key[1]=aa,key[2]=bb,联合索引呢?假设有两个字段,a,b建成索引(a,b),那key[]是怎么储存的?

------解决方案--------------------
key[1]=‘a,b’
------解决方案--------------------
KEY 中存储的是A,B
------解决方案--------------------
key的值a,b
------解决方案--------------------
索引不是你想得这样保存的。看你使用什么engine 了
比如你使用了myisam,他的数据是按插入的顺序保存的,索引只是保存数据的行号而不是你说的直接保存行的值,如果一个索引保存行的值,那么这样存储空间会浪费很多!
如果使用的innodb,因为使用了聚集索引,所以数据物理上是有序的,这是索引存的是主键保存的索引值,也就是说需要访问两次索引。

------解决方案--------------------
key(a,b)