1

次のように、where 句の特定の日付に対してフィルター処理するかなり単純なクエリがあります。

declare @a_date date
set @a_date = '2013-09-17' 

select * from table t where t.date = @a_date

上記のクエリは、実行に約 30 分かかります。

クエリを次のように変更すると、実行に数秒しかかかりません。

declare @a_date date
declare @string_date varchar(8)

set @a_date = '2013-09-17' 

set @string_date = convert(varchar(8), @a_date, 112)

select * from table t where t.date = @string_date

RapidSQL と iSql の両方を使用して Sybase ASE 12 でこのクエリを実行し、同じ動作を観察しています。Sybase の日付変換に従って、互換性のある日付文字列形式は、演算子の RHS の日付型に自動的に変換されます。

フィールド t.date は日時データ型です。

なぜこれが起こっているのですか?

4

0 に答える 0