面试题:一张表中数据过多,如何提高查询效率?
最近面试有被问到过这个问题,一张表中数据过多(用户表中有几千万个用户),如何提高登录的查询效率?
要求:忽略建立索引的方案
求解答
------解决方案--------------------1、分库分表是之前用的比较多的方案
2、建数据仓库
------解决方案--------------------表分区, 这种场景,按用户名规则分区
------解决方案--------------------表分区 最起码得分页吧 分页查询 具体你也可以在查询语句中做点优化
------解决方案--------------------最简单的就是分表,跟据用户的id,放到不同的表里面。
mysql一般一个表500万没问题,5000万的话,放到10个表里面就ok了。
------解决方案--------------------做一些类似缓存的表,比如 10天内登录的用户存储进去 ,优先查询这种缓存表,查不到再去主表查询
------解决方案--------------------具有用户表的外键 利用外键可以快速的比对主表的数据 作为临时修改的验证参考 保证登录的正确性
------解决方案--------------------还是分表吧,那样最简单