sql >> データベース >  >> RDS >> Sqlserver

テーブル値関数がクエリのパフォーマンスを低下させる

    テーブル変数を返すと、マルチステートメントテーブル値関数になります。 また、SQL Serverが適切な実行プランの基礎となる統計がないことを除いて、テーブルのように扱われるため、パフォーマンスが低下する可能性があります。そのため、関数は非常に少数の行を返すと推定されます。したがって、より多くの行が返される場合、生成される計画は最適とは言えない可能性があります。

    一方、SELECTのみを返すと、インラインテーブル値関数になります。 -それをビューとして考えてください。この場合、実際の基になるテーブルがメインクエリに取り込まれ、適切な統計に基づいてより適切な実行プランを生成できます。この場合、基本的に関数がメインクエリにマージされているだけなので、実行プランには関数についての言及がまったくないことに気付くでしょう。

    MSDN CSS SQL Serverエンジニアによる(引用):



    1. MySQLがAUTO_INCREMENTIDを再利用するのを停止します

    2. 不規則な形式の文字列の途中から数値を返す

    3. 可用性グループ接続の構成

    4. mysqlの2つの連続する行の違い