innodb关于innodb索引优化问题

众所周知innodb类型的引擎的索引类型为聚簇索引,所有的数据都在叶子节点下。查询的时候找到索引对应的叶子节点,直接读取叶子下面的数据。

我的疑问是:有一张innodb表,当表的列数越多的时候,查询效率就会越低?

我的理解是:列越多,叶子节点下面的数据就越多,索引工作时占用的内存空间就越大,效率就越低。

请高手指教,谢谢。
阅读 3.1k
3 个回答

还要看存的是什么内容 只是列多能代表什么

innodb有俩种索引方式。一种是聚集索引,插入数据时,会同时在叶子节点中存储所有信息。另一种是辅助索引,叶子节点不对数据存储,最后在聚集索引中使用主键获取对应的行记录。。。

如果插入的数据大(列多算一种),超过定义的page页大小,会另外存到溢出页上,通过偏移量指向溢出页。

列多占用内存资源是一个,单页存储数据量少,获取同样的行数需要的磁盘io量就会就会更大,碎片率也会更高,所有的这些都会使性能下降

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题