最近、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 番目のクエリが結合に変換されることがわかりますが、このパフォーマンスの違いが発生する理由はまだわかりません。私の考えでは、最初のものよりも違いがある場合は、より高速になるはずです。
関連するすべての分野の索引があります。