zoukankan      html  css  js  c++  java
  • 2020-07-06:一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录

    福哥答案2020-07-06:
    表a和表b的字段都是id和tid,数据类型都是int。
    查询结果顺序上以 表a 为准。
    1.JOIN。
    SELECT * FROM a JOIN b ON a.tid = b.tid LIMIT 200 OFFSET 50000
    2.子查询。
    SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY T.tid) AS num, T.*
    FROM
    (SELECT a.id AS aid,a.tid,b.id AS bid
    FROM b JOIN a ON a.tid = b.tid
    ) T ) tb WHERE tb.num BETWEEN 50001 AND 50200
    3.表a和表b都分表,然后JOIN,可以利用多核。
    4.查询表a的50200条数据,然后跟表b JOIN,适用条件是a的tid在b中一定存在。
    5.查询表a的50001到50200的数据,然后跟表b JOIN,适用条件是a的tid在b中一定存在并且唯一。

    目前没找到完美的答案。请评论。

  • 相关阅读:
    achivemq(消息队列)的使用
    java高并发当时处理的思路
    字符串的应用
    正则表达式
    文本文件的读取与写入
    继承
    冒泡排序法
    类与对象
    数据类型
    关键字和语句
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13442840.html
Copyright © 2011-2022 走看看