• 如何快速查找一张大表的前面数据


    公司生产上面有一张表,里面数据有: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是递增的,而且查询的范围要控制的比较好,目前想到的分表是一个比较好的方法可以解决此问题

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

  • 相关阅读:
    单例模式
    iOS宏定义
    WKWebView基本使用
    文件操作(NSFileManager)
    iOS 字典和NSData之间转换
    iOS 身份证,邮箱,手机号验证
    iOS自定义数字键盘
    iOS指纹识别
    JavaScript表单
    JavaScript数组操作方法集合(2)
  • 原文地址:https://www.cnblogs.com/garinzhang/p/3481965.html
Copyright © 2020-2023  润新知