日期:2014-05-20  浏览次数:20694 次

面试题:一张表中数据过多,如何提高查询效率?
最近面试有被问到过这个问题,一张表中数据过多(用户表中有几千万个用户),如何提高登录的查询效率?

要求:忽略建立索引的方案

求解答

------解决方案--------------------
1、分库分表是之前用的比较多的方案
2、建数据仓库
------解决方案--------------------
表分区, 这种场景,按用户名规则分区
------解决方案--------------------
表分区  最起码得分页吧   分页查询  具体你也可以在查询语句中做点优化
------解决方案--------------------
最简单的就是分表,跟据用户的id,放到不同的表里面。
mysql一般一个表500万没问题,5000万的话,放到10个表里面就ok了。

------解决方案--------------------
做一些类似缓存的表,比如 10天内登录的用户存储进去 ,优先查询这种缓存表,查不到再去主表查询
------解决方案--------------------
具有用户表的外键 利用外键可以快速的比对主表的数据 作为临时修改的验证参考 保证登录的正确性
------解决方案--------------------
还是分表吧,那样最简单