2009-09-05 45 views
4

我听说DateTime.Now是非常昂贵的调用(从here由于DateTime.Now是GETDATE()而昂贵吗?

是SQL 2005/2008昂贵GETDATE()?如果我的存储过程多次使用它,我是否需要将它缓存到变量中?

+2

您可以与我们分享您听到“我听说过DateTime.Now”的消息吗? – 2009-09-05 12:49:20

+0

可能来自这个最近的问题:http://stackoverflow.com/questions/1381370/hidden-boxing-in-the-bcl – adrianbanks 2009-09-05 12:59:43

+2

这只是昂贵的,如果你打电话给它很多。 adrianbanks指出的这个问题表明,大约需要500毫秒才能调用datetime.now一百万次。与递增整数或连接一对字符串(我测试它)相比,这非常慢,但仍然不是那么慢。除非你计划在一些时间关键的代码中调用datetime.now几百万次,否则它可能没有关系。 – Kibbee 2009-09-05 18:36:50

回答

6

它并不昂贵:它直接来自操作系统。

反正我会缓存它。如果您有多个报表,它对于单独的呼叫很可能会有所不同。假设你有多个插入,肯定你想要这个值关联acrosss表?

如果它在SELECT中使用,比如输出,那么通常只会评估一次。

+0

+1“关联acrosss表” – TheVillageIdiot 2009-09-05 12:39:20

+1

谢谢。我可以问一下:今天有用还是最好的拼写错误...? – gbn 2009-09-05 12:42:04

+0

是的!当然! :-) – 2009-09-05 12:52:18