如何快速查找一张大表的前面数据
2013-12-19 12:55
381 查看
公司生产上面有一张表,里面数据有:3486764条,每次想去查询最新的几条数据时总是很慢,以下为使用的语句:
因为有order by语句会很慢,查询出来将近1分钟才能出来,有时候更长
经过脑海里想了之后,记得以前有位大师(具体记不清是哪位大师)有过一个案例,他对大数据查询时,先将其中最大的主键id查询出来,再做进一步处理,以下为我写的的sql:
此时查询100W条数据的最新数据0.547秒搞定,真是差别太大了。
后记:现在终于为何大师会先将表的主键id查询出来,再进行进一步查询,可能这种方案在对数据量比较少时,根本没有任何好处,反而工作量还多了,但是对大数据就不一定了;这个需要有些前提,id是递增的,而且查询的范围要控制的比较好,目前想到的分表是一个比较好的方法可以解决此问题
总结:任何程序没有绝对的对与错,只有相对的对与错,在适当的时候用适当的方法才是更好的;没有最好,只有更好!
select * from txn_fin_txn_log t order by t.id desc;
因为有order by语句会很慢,查询出来将近1分钟才能出来,有时候更长
经过脑海里想了之后,记得以前有位大师(具体记不清是哪位大师)有过一个案例,他对大数据查询时,先将其中最大的主键id查询出来,再做进一步处理,以下为我写的的sql:
select * from txn_fin_txn_log t where t.id > ( select max(s.id) - 1000000 from txn_fin_txn_log s ) order by id desc;
此时查询100W条数据的最新数据0.547秒搞定,真是差别太大了。
后记:现在终于为何大师会先将表的主键id查询出来,再进行进一步查询,可能这种方案在对数据量比较少时,根本没有任何好处,反而工作量还多了,但是对大数据就不一定了;这个需要有些前提,id是递增的,而且查询的范围要控制的比较好,目前想到的分表是一个比较好的方法可以解决此问题
总结:任何程序没有绝对的对与错,只有相对的对与错,在适当的时候用适当的方法才是更好的;没有最好,只有更好!
相关文章推荐
- Oracle如何快速操作千万级大表数据
- Oracle如何快速操作千万级大表数据
- Hive中如何快速的复制一张分区表(包括数据)
- Hive中如何快速的复制一张分区表(包括数据)
- Hive中如何快速的复制一张分区表(包括数据)
- Hive中如何快速的复制一张分区表(包括数据)
- 数据结构(如何在10亿数据中快速查找出重复的数据)
- Hive中如何快速的复制一张分区表(包括数据)
- Hive中如何快速的复制一张分区表和数据
- 实用:如何快速去掉一张图中自己不想要的颜色【举例】
- MySQL误操作后如何快速恢复数据
- 存储过程如何向一张表中循环插入1000条数据和字段二进制转换
- 如何快速的10分钟制作一张主从表单及功能
- C#如何快速高效地导出10万以上的大量数据?
- 如何快速的10分钟制作一张主从表单及功能
- 教大家如何自行快速恢复硬盘上的数据?
- mysql数据库如何实现亿级数据快速清理
- 如何把一张表里的数据update到另一张表
- 删除一张表中重复的值以及查找出表中重复两条以上的数据
- 如何快速将一张彩色图片变成黑白图片