update_time >:sql_last_value AND update_time < NOW()写法没有等号可能漏掉一些增量

来源:4-2 logstash全量、增量同步解决方案

网络时空

2021-07-16 23:37

我看了徐老师讲到如下写法是3.0的写法

SELECT * FROM t_blog WHERE update_time >:sql_last_value AND update_time < NOW() ORDER BY update_time desc


我感觉如果  update_time >:sql_last_value 没有带等号的话,一定会漏掉一些增量,因为你这样根本无法保证R12或R22的数据会扫描到?后面的总结3.0的时候,感觉没有讲透讲清楚。


麻烦徐老师解释下如上问题,谢谢!

写回答 关注

1回答

  • 慕田峪9281056
    2022-01-21 14:32:34


    假如2022:01:01 00:01插100条

    第一次搜
    >1979:01:01 00:00 < 2022:01:01 00:01

    你可能根本就搜不出来,因为条件是少于当时系统时间00:01
    其实就是搜索了
    >1979:01:01 00:00 < 2020:01:01 00:00这个范围而已

    所以这时候插入的数据根本没匹配到数据
    注意这里保存的时间点可能是00:00,但绝对不是00:01

    所以第二次搜的时候是>00:00而不是>00:01

    >2022:01:01 00:00 < 2022:05:05 00:01

    这里为什么是00:00而不是00:01呢,因为第一次搜的时候是记录<少于不是=的时间点

    其实老师这个语法只是把当前时间插入的100条数据放弃搜索不处理而是供给下次执行搜索的范围做条件

Springboot + ElasticSearch 构建博客检索系统

Springboot + ElasticSearch 构建个人博客检索系统

22961 学习 · 112 问题

查看课程

相似问题