データベース最適化の実践 [TSQL 章]
インデックスを正しく使用する方法を以前に紹介しましたが、インデックスを調整するのが最速のパフォーマンス チューニング方法ですが、一般的に言えば、インデックスを調整してもクエリのパフォーマンスが向上するだけです。さらに、データ アクセス コードと TSQL を調整することもできます。この記事では、データ アクセス コードと TSQL を最適な方法で再構築する方法を紹介します。
ステップ 4: TSQL コードをアプリケーションからデータベースに移行します
私の提案が気に入らないかもしれませんが、あなたまたはあなたのチームには、ORM (オブジェクト リレーショナル マッピング、つまりオブジェクト) を使用するというデフォルトの暗黙のルールがあるかもしれません。リレーショナル マッピング) はすべての SQL を生成し、その SQL をアプリケーションに配置しますが、データ アクセスのパフォーマンスを最適化したい場合、またはアプリケーションのパフォーマンスの問題をデバッグする必要がある場合は、(ストアド プロシージャ、ビューを使用して) SQL コードをデータベースに移植することをお勧めします。 、関数、トリガー) の理由は次のとおりです:
1. ストアド プロシージャ、ビュー、関数、トリガーを使用してアプリケーションで SQL コードの関数を実装すると、アプリケーションでの SQL レプリケーションの欠点が軽減されます。 SQL を 1 か所にまとめることは、将来のコード再利用のための優れた基盤を築きます。
2. データベース オブジェクトを使用してすべての TSQL を実装すると、TSQL のパフォーマンスの問題を分析し、TSQL コードを集中管理するのに役立ちます。
3. TS SQL をデータベースに移植した後、TSQL コードをより適切に再構築して、データベースの高度なインデックス機能を活用できます。さらに、SQL コードが不要なアプリケーションはよりクリーンになります。
このステップは最初の 3 つのステップほど即時ではないかもしれませんが、このステップを実行する主な目的は、その後の最適化ステップの基礎を築くことです。 ORM (NHibernate など) を使用してアプリケーションにデータ アクセス ルーチンを実装する場合、テスト環境や開発環境では問題なく動作するかもしれませんが、運用データベースでは問題が発生する可能性があります。 ORM に基づいたデータ アクセス ロジックを検討することは、TSQL オブジェクトを使用してデータ アクセス ルーチンを実装する良い方法です。これにより、データベースの観点からパフォーマンスを最適化する機会が増えます。
移行を完了するのに 1 ~ 2 人月を費やせば、将来的には確実に 1 ~ 2 人年以上のコストを節約できることを保証します。
OK! 私がやったことを実行し、TSQL をデータベースに完全に移行したと仮定して、本題に移りましょう!
ステップ 5: 非効率な TSQL を特定し、TSQL の再構築とアプリケーションのベスト プラクティスを採用する
能力や習慣が異なるため、作成する TSQL のスタイルも異なり、一部のコードは最適に実装されていない可能性があります。平均的なプログラマーが最初に考えるのは、TSQL 実装要件の作成です。パフォーマンスの問題については後で説明します。そのため、開発やテスト中に問題が発見されない可能性があります。
ベスト プラクティスを知っていても、コードを書くときにさまざまな理由でベスト プラクティスを採用しない人もいます。彼らは、ユーザーが怒るまで待ってからベスト プラクティスについて考え直します。
ベストプラクティスとは何かを紹介することがまだ必要だと思います。
1. クエリでは「select *」を使用しないでください
(1) 不要な列を取得すると、追加のシステムオーバーヘッドが発生します。「省は救われるべき」という言葉があります;
(2) データベースはテイクできません。 「インデックスをカバーする」という利点があるため、クエリが遅くなります。
2. 選択リストで不要な列を避け、接続条件で不要なテーブルを避ける
上記はデータベース最適化演習 [TSQL] の内容です。その他の関連記事については、PHP 中国語 Web サイト (www. php .cn)!