sqlserver中排序字段用datetime和bigint的13位时间戳,哪个性能会更好一些

发布于 2022-09-04 09:29:59 字数 324 浏览 10 评论 0

sql server中, 数据表中想按照时间来排序,或以时间为条件进行提取数据,表中的时间列是用datetime类型,还是用时间戳来表示,哪样提取的速度可以更快,

时间戳这里有个问题,有10位和13位时间戳,13位有毫秒,精度要高一些,datetime也是可以记到毫秒,
但是13位就必须要用到bigint,和datetime都是8字节,如果用10位时间戳,int就够了,所以bigint和int的类型不同,是不是也会对这个排序提取的性能有影响,

我是希望使用13位的时间戳,精度高,在用时间戳做分页的时候,降低同一秒出现2条记录的概率,这样是用bigint还是用datetime,哪个性能更好呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉态萌生 2022-09-11 09:30:00

理论上说bigint的性能好点,但是datetime在显示的时候有优势。我觉得如果你的数据量少于100万的话,果断用datetime,对人类友好。datetime能精确到毫秒的。

哀由 2022-09-11 09:30:00

从你的描述来看,与时间无关,本质上是按照插入顺序提取数据。因此,在不考虑数据迁移的问题的前提下,建议使用 BIGINT 自增量,这样保证你排序的时候是按照插入顺序排序的,不会出现同一秒有相同时间戳的情况。
另外,当数据低于 1000 万的时候,在 SQL Server 里面同等条件下 BIGINT 和 DateTime 从性能上和用户体验上来说真的没有太大的区别,从根本上说性能取决于你的程序怎么写。
如果我是你,我会创建一个 BIGINT 字段用于分页,DATETIME 字段记录当前时间用于显示。从职能上把两个字段划分开,各司其职。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文