當數據庫中多條記錄插入timestamp相同時,而恰好sql中是按照此字段排序,則取出的數據可能會有遺漏。
例如:
SQL 1:
select * from money_record where user_id=85 and create_time>"2005-10-10" and create_time<="2015-10-09" order by record_id desc limit 0,5;
結果如下:
SQL 2:
select * from money_record where user_id=85 and create_time>"2005-10-10" and create_time<="2015-10-09" order by record_id desc limit 0,6;
結果如下:
可以發現記錄順序發生改變。
實際上如果這里有翻頁的話,有可能會發生記錄丟失的情況。
如圖:
第一頁SQL:
select * from money_record where user_id=85 and create_time>"2005-10-10" and create_time<="2015-10-09" order by record_id desc limit 0,5;
結果:
第二頁SQL:
select * from money_record where user_id=85 and create_time>"2005-10-10" and create_time<="2015-10-09" order by create_time desc limit 5,5;
結果:
可以發現第二頁的時候數據展示是有問題的。
推測mysql按timestamp類型字段排序的SQL,如果表中兩條記錄timestamp恰好相同,而分頁時前一頁兩條記錄恰好只能有一條,當展示第二頁時,(第二頁)首條記錄則可能仍是第一頁的最后一條記錄。