最后的筛选SQL条件应该改为:update_time>=sql_last_value and update_time<now()
SQL where条件为: update_time>sql_last_value 的问题在于会遗漏临界点数据,解决思路应该是将临界点数据包含进来
老师给出的解决方案SQL是: update_time>sql_last_value and update_time<now()
就是在上面的SQL筛选条件上又加了一个筛选条件,无需理解SQL的业务含义,就可知下面SQL的数据范围比上面的小,上面的大范围没有包含的数据,就不可能在一个比上面还小的范围里。即临界点数据没有被上面的sql查询到,就不可能被下面的sql查询到。所以老师最后给出的sql并没有解决临界点数据问题,正确的SQL应该是将下面的>改为>=(我想这应该是老师的一个手误)
这样的话,临界点的数据就交给了下一次同步任务查出来,不会忽略以及重复查询