最近、SQL Server 2005用に作成されたかなり古いストアドプロシージャを調べてきましたが、理解できないことがわかりました。何らかのタイプの関数呼び出しのようです。
サンプル:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
これは、すべての行が表示されますsys.objects
持ってcreate_date
前から24時間前。
このクエリの実行プランを表示する{fn Now()}
とgetdate()
、データベースエンジンに置き換えられていることがわかります。
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
明らかに、を使用すること{fn Now()}
は、よりもはるかに鈍いですGetDate()
。文書化されていないので、私はペストのようなこの構文を避けます。