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

関数を使用して SQL クエリを簡素化すると、パフォーマンスに大きな影響を与えますか?

    通常、選択 スカラー関数の結果はそれほど問題にはなりませんが、フィルタリング 簡単に数百秒かかる場合があります (必ずしもそうとは限りません)。

    スカラー関数の結果でフィルタリングする必要がある場合 (WHERE col = dbo.scalar_function() )、代わりにインライン テーブル値関数を作成すると役立つことがよくあります。結果テーブルの唯一の行としてその値を返します。次に、inner join を実行します。 関数の結果を使用して、返された値で効果的にフィルタリングします。これが機能するのは、SQL Server が常にインライン テーブル値関数を巻き戻し、呼び出し元のクエリにインライン化できるためです。

    関数が複数ステップの関数である場合、このトリックは機能しないことに注意してください。これらは巻き戻すことができません。




    1. 同一のスキーマを持つ2つのデータベースをどのようにマージできますか?

    2. 通知のために毎秒テーブルを照会します。それは良い習慣ですか?

    3. Mysqlの無関係なテーブルから外部キー制約を適用するにはどうすればよいですか?

    4. MySQL InnoDB:.ibdファイルがないため、統計を計算できません