1

最近、SQL Server 2008 で奇妙なパフォーマンスの問題が発生しました

これら 2 つのクエリを考えると (どちらも同等です)

select max(tfiv_value) from tablefieldintvalue where tfiv_fk_tablefield = 48

select max(tfiv_value) from tablefieldintvalue where tfiv_fk_tablefield = 
(select tbfl_pk from tablefield where tbfl_name = 'Field with pk 48')

1 つ目は約 20 秒かかりますが、2 つ目は 0 秒かかります。

サブクエリを明確にするために

(select tbfl_pk from tablefield where tbfl_name = 'Field with pk 48')

その結果は 48 です。

クエリ プランでは、2 番目のクエリが結合に変換されることがわかりますが、このパフォーマンスの違いが発生する理由はまだわかりません。私の考えでは、最初のものよりも違いがある場合は、より高速になるはずです。

関連するすべての分野の索引があります。

4

1 に答える 1