sqlserver中排序字段用datetime和bigint的13位时间戳,哪个性能会更好一些
sql server中, 数据表中想按照时间来排序,或以时间为条件进行提取数据,表中的时间列是用datetime类型,还是用时间戳来表示,哪样提取的速度可以更快,
时间戳这里有个问题,有10位和13位时间戳,13位有毫秒,精度要高一些,datetime也是可以记到毫秒,
但是13位就必须要用到bigint,和datetime都是8字节,如果用10位时间戳,int就够了,所以bigint和int的类型不同,是不是也会对这个排序提取的性能有影响,
我是希望使用13位的时间戳,精度高,在用时间戳做分页的时候,降低同一秒出现2条记录的概率,这样是用bigint还是用datetime,哪个性能更好呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
理论上说bigint的性能好点,但是datetime在显示的时候有优势。我觉得如果你的数据量少于100万的话,果断用datetime,对人类友好。datetime能精确到毫秒的。
从你的描述来看,与时间无关,本质上是按照插入顺序提取数据。因此,在不考虑数据迁移的问题的前提下,建议使用 BIGINT 自增量,这样保证你排序的时候是按照插入顺序排序的,不会出现同一秒有相同时间戳的情况。
另外,当数据低于 1000 万的时候,在 SQL Server 里面同等条件下 BIGINT 和 DateTime 从性能上和用户体验上来说真的没有太大的区别,从根本上说性能取决于你的程序怎么写。
如果我是你,我会创建一个 BIGINT 字段用于分页,DATETIME 字段记录当前时间用于显示。从职能上把两个字段划分开,各司其职。