SQL优化 使用 ROW_NUMBER( ) OVER( ORDER BY id ) AS row_num, 循环查询慢

我现在想把这些数据 分批放到 布隆过滤器中,老师有没有什么好的办法

数据分批取出来再放过滤器的过程,SQL 语句还是要依赖分页来做,根据上面的回复,咱们这边业务侧也没办法调整,暂时是没有更好的办法。

咱们能否在外层条件 “t.row_num > 1980000” 这里做修改,每次记录下上次取到的最大值,然后在这个基础上增加分页需要的记录数作为下次 “t.row_num” 的条件。另外在写入少的场景下, 4.0 ga 会有 coprocessor cache 功能,对分页查询有很大改进。

感谢老师的回答:
还有一个问题就是,这个内部的循环,全表扫描非常的慢,ROW_NUMBER ( ) OVER ( ORDER BY id ) AS row_num 主要是因为这一句,我要如何去修改呢? :pray:

    ->     SELECT
    ->         dist_code,
    ->         no_han_code,
    ->         no_prod_code,
    ->         no_quantity,
    ->         se_date,
    ->         ROW_NUMBER ( ) OVER ( ORDER BY id ) AS row_num
    ->     FROM
    ->         dc_f_d_s
    ->     WHERE
    ->         Is_Del = '0'
    ->     ) t

使用 ROW_NUMBER()这种方式对查询来说,效率已经很高了,至于说还是非常慢,推测是数据量太大,暂无其他的优化方式。

好的谢谢老师,不知道 如果是4.0 换成 TiFlash 可不可以

多关注下官网, TiFlash 出正式版本之后可以用相似业务场景测试下。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。