Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 Sql 2005,按日期时间还是按整数排序更快?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 Sql 2005,按日期时间还是按整数排序更快?

Sql server 2005 Sql 2005,按日期时间还是按整数排序更快?,sql-server-2005,Sql Server 2005,如果按int排序更快,那么使用按int排序的功能按日期时间对表进行排序的诀窍是什么?您这样问的目的是什么 如果为日期时间编制索引,则应该对该列进行有效排序 更好的是,将datetime字段设置为表的聚集索引,这应该是最有效的方法 您是否试图通过一些技巧来提高对Datetime字段排序的性能?如果是这样的话,我将把SQL Server留给它自己的优化,让您的代码清晰易读。在Datetime字段上有一个索引。假设所有其他内容都相同(两列都有相似的索引或未索引),理论上排序int列应该更快,因为它们更

如果按int排序更快,那么使用按int排序的功能按日期时间对表进行排序的诀窍是什么?

您这样问的目的是什么

如果为
日期时间
编制索引,则应该对该列进行有效排序


更好的是,将
datetime
字段设置为表的聚集索引,这应该是最有效的方法

您是否试图通过一些技巧来提高对Datetime字段排序的性能?如果是这样的话,我将把SQL Server留给它自己的优化,让您的代码清晰易读。在Datetime字段上有一个索引。

假设所有其他内容都相同(两列都有相似的索引或未索引),理论上排序
int
列应该更快,因为它们更小(4字节比8字节),这可以使单个比较更快

int的速度更快,因为您需要更少地点击硬盘,才能从中提取数据进行排序。整数也比日期时间小


在星型模式中,通常使用整数存储指向另一个表的指针,该表上有实际日期时间。当datetime存储在另一个表中并且DayOfYear、Hour或Second等DatePart被分解为单独的列时,这也很有用。然后可以对这些列进行索引,以提高对DeaTebug查询的性能。

< P>如果您试图优化日期/时间排序,这非常重要,您可能需要考虑<代码> SimultDeaTime//Cord>Type。< /P>
它是一个32位的数字,所以它的排序速度与
int
一样快,但与
datetime
相比,它的可接受日期范围较小(1900-2079),并且四舍五入到最接近的分钟。

我接受了你的答案。我认为最好的解释是:DateTime y比DateTime x大,具有更大的int关联值。这样,对日期时间进行排序就是对整数进行排序。几乎。。。请记住,SQL Server中的
int
是一个有符号整数,但
smalldatetime
基本上是一个无符号整数(1900-01-01 00:00之后的分钟数的正偏移量。除非CPU要求将32位无符号整数值转换为64位有符号整数以正确排序,否则它们将以相同的速度排序。在这种情况下,即使是
smalldatetime
,在占用与
int
相同的空间时,排序速度也可能较慢。)(CPU操作、磁盘/内存IO将是相同的)。