zoukankan      html  css  js  c++  java
  • 如何快速查找一张大表的前面数据

    公司生产上面有一张表,里面数据有:3486764条,每次想去查询最新的几条数据时总是很慢,以下为使用的语句:

    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是递增的,而且查询的范围要控制的比较好,目前想到的分表是一个比较好的方法可以解决此问题

    总结:任何程序没有绝对的对与错,只有相对的对与错,在适当的时候用适当的方法才是更好的;没有最好,只有更好!

  • 相关阅读:
    jquery手写实现单页滚动导航
    小程序:商品分类,实现滑块视图
    微信小程序增加悬浮在线客服
    小程序 杂记
    自动售货机 扫描支付 原理
    HTTP的SSL 证书安装
    表达
    Linux 下svn恢复到某一版本
    倒车入库 技巧
    svn 杂记
  • 原文地址:https://www.cnblogs.com/garinzhang/p/3481965.html
Copyright © 2011-2022 走看看