首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非唯一值时间戳字段的基于游标的分页

问非唯一值时间戳字段的基于游标的分页
EN

Database Administration用户
提问于 2017-11-22 06:14:08
回答 1查看 4.4K关注 0票数 1

我们正试图为下表创建一个查询:

代码语言:javascript
复制
 CREATE TABLE `Action` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `vendor_Id` int(10) unsigned DEFAULT NULL,
  `name` varchar(60) NOT NULL,
  `assigned_To` varchar(40) DEFAULT NULL,
  `updated_At` datetime(3) NOT NULL,
  `completed_At` datetime(3) DEFAULT NULL,
  `deleted_At` datetime(3) DEFAULT NULL,
  `created_At` datetime(3) NOT NULL,
  `deadline` datetime(3) NOT NULL,
  `notes` varchar(400) DEFAULT NULL,
  `completed` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `action_vendor_id_foreign` (`vendor_Id`),
  CONSTRAINT `action_vendor_id_foreign` FOREIGN KEY (`vendor_Id`) REFERENCES `Vendor` (`vendor_Id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1

我们想要显示的行动,使用分页的基础上,最后期限字段的上升顺序。但是截止日期可以具有相同的值,这给我们实现基于截止日期字段的游标分页带来了问题。

可以为将来的任何日期创建操作。我们考虑过使用created_At和deadline,但是它失败了,因为我们可以在11月22日和截止日期25创建Action,在11月23日使用最后期限24创建另一个操作。我的意思是,它们之间没有任何关系。id和deadine列也会发生类似的情况。

如何解决在ASC顺序中使用分页和截止日期显示操作的问题。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-11-22 13:15:23

ORDER BY deadline ASC, id ASC将是“确定性的”(假设id是表的PRIMARY KEY )。并包括INDEX(deadline, id)。

再论OFFSET:http://mysql.rjweb.org/doc.php/pagination的分页与罪恶

如果用户在列表中分页时有机会添加或删除行,则可以在分页列表中跳过或复制项。“记住你停止的地方”(参见链接)解决了这个问题。但是,当涉及两列时,要说>有点棘手。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/191472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档