我看了徐老师讲到如下写法是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的时候,感觉没有讲透讲清楚。
麻烦徐老师解释下如上问题,谢谢!
假如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条数据放弃搜索不处理而是供给下次执行搜索的范围做条件