create table t1(x int auto_increment primary key, y int, key inb using btree(y)) engine=innodb;
create table t2(x int auto_increment primary key, y int, key msm using btree(y)) engine=myisam;
describe select x from t[1或2] where y=12
t1得出的结果是using where, using index
t2是using where
不知道这样测试是不是有问题
t1, 我觉得之索引用到了索引覆盖, 是因为y索引列的节点存储了主索引的列值
t2, mysiam不支持聚集索引, 所以y索引列的节点存储的是一个指针, 这个指针是行的物理地址吗? 还是一个其他东西呢???
刚接触这个不久, 理解有误之处希望大家不要见笑

解决方案 »

  1.   

    不是,只有innodb会默认的给你生产一个隐含的,因为innodb用的是聚集索引,必须保证物理上的有序存储。
      

  2.   

    t2, mysiam不支持聚集索引, 所以y索引列的节点存储的是一个指针, 这个指针是行的物理地址吗? 还是一个其他东西呢???
    ----------------------------------------------------------------------------------------------------
    对于myisam 的索引和innodb ,有很大不同,哪怕是innodb  的secondary  index,他们的叶子节点存的东西是不一样的,对于myisam,叶子节点存的是索引键信息和数据的物理行号。