面试官:如何优雅的从千万级数据中获取你想要的?我只用了5毫秒....

作者: 图灵诸葛讲Java分类: 计算机技术 发布时间: 2023-09-18 22:14:14 浏览:4550 次

面试官:如何优雅的从千万级数据中获取你想要的?我只用了5毫秒....

bokersy:
不讲原理的话用处不大,为什么索引能快?需要明白聚集索引和辅助索引 索引结构: - 聚集索引的叶子节点存的是全表字段 - 辅助索引只存索引的字段及其对应的主键 查聚集索引是全表扫描 所以为什么辅助索引更快呢?从上边的索引结构就能得到答案了,先走体量小的辅助索引,那么只需要很少次的磁盘IO,就可以拿到对应行数据。 在此基础上,如果需要全表字段,那么根据这些ID去回表就行了。 这个时候你可能回说,如果回表查询范围很大,且这些需要回表的 ID 是无序且离散的怎么办呢?这个时候就要提到 MMR 优化了,这是MySQL 自己做的优化操作,它会把需要回表操作的 ID 排序,将无需的、离散的多个小IO 尽可能的合并成大IO,从而提高回表的效率。———————— 以上内容基于 MySQL 的 Innodb 引擎

【回复】无需的、离散的 ===> 无序的、离散的
滋补需谨慎:
那种id的方式看到好多次了 这种方式在程序里根本没法用啊 用户跳页操作咋知道从哪个id开始 id肯定不会连续

【回复】亲,这边如果有一千万条数据提供给用户进行任意分页查询,并且还需要支持高并发的话,这边建议您直接换搜索引擎存储哦。mysql是做不到这个能力的。 一般这种优化都是在内部后台系统,可以通过强制性的加上条件,比如年份,月份啥的,来做搜索。或者在大批量数据中,通过这种方式来循环处理数据。你那种场景建议直接换搜索引擎,mysql压根做不到。
【回复】[doge]大多分页优化都这样
【回复】没有哪个技术能适用于全部的业务场景,但有它适用的场景。你可以看下京东,淘宝,这些平台商品数据肯定巨大,你去他们网站会发现,根本没有显示页数,第几页之类的功能。因为这都是经过分页优化的,不由用户来控制
月半55开:
目前一种就是先把id 查出来然后关联查询,如果还慢就只能找前端配合,把前5页id 和后5页id 给前端,前端跳转页限制不能跳超过5页,反正这玩意实际搞起来也挺麻烦

科技猎手 程序员 编程 面试 MySQL java 编程开发 Java面试 SQL优化 mysql优化

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读