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

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

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

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

阅读 6.6k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏