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

SQLクエリを高速化する方法

    SQLクエリを高速化して、Webサイトとアプリケーションが高速に動作し、優れたカスタマーエクスペリエンスを提供できるようにすることが重要です。データベースクエリを高速化し、クエリのパフォーマンスを向上させるためのヒントをいくつか紹介します。


    SQLクエリを高速化する方法

    SQLクエリの速度とパフォーマンスを向上させるためのいくつかの重要な方法を次に示します。


    1。 SELECT *

    の代わりに列名を使用します

    SELECTステートメントを使用するときは、 SELECT *from…を使用する代わりに、結果に必要な列のみを使用してください。 これにより、結果のサイズが大幅に削減され、SQLクエリが高速化されます。

    ボーナスリード:MySQLで最大接続数を増やす方法

    2。ネストされたクエリとビューを避ける

    クエリ/ビューを別のクエリ/ビュー内にネストすると、すべてのクエリに対して多くのデータが返され、クエリの速度が大幅に低下します。場合によっては、データベースサーバーがタイムアウトして何も返さないこともあります。


    3。インデックス付き列のクエリ中にIN述語を使用する

    インデックス付きの列をクエリするときは、「=」などの数学演算子やAND / ORなどの論理演算子を使用する代わりに、INリスト述語を使用してください。 IN述語は、クエリオプティマイザがインデックスの並べ替えシーケンスに一致するようにINリストを並べ替えるため、SQLクエリを高速化し、結果を高速化できます。

    ボーナスリード:MySQLにUTF8文字を保存する方法

    4。事前ステージングを行う

    大きなテーブルと結合するクエリとプロシージャがある場合は、その結果を使用して別のテーブルを作成することをお勧めします。事前にテーブルを結合すると、その結果を使用するSQLクエリの動作がはるかに速くなります。


    5。一時テーブルを使用する

    同様に、大きなテーブルを小さなテーブルに結合する場合は、小さなテーブルとの結合に必要なデータのみを含む一時テーブルを作成します。これを行うには、大きなテーブルからデータを選択し、それを一時テーブルに転送して、小さなテーブルをこの一時テーブルに結合します。

    ボーナスリード:PostgreSQLマテリアライズドビュー

    6。 UPDATEの代わりにCASEを使用する

    UPDATEステートメントは、ロギングのためにCASEステートメントよりも時間がかかります。一方、CASEステートメントは、更新が必要なものを決定し、SQLクエリを高速化します。


    7。 GUIDの使用は避けてください

    グローバルに一意の識別子はクエリの速度を低下させる可能性があるため、使用しないでください。代わりにDATEまたはIDENTITYを使用してください。

    ボーナスリード:データベースをUTF8に変更する方法

    8。 JOINSでORを使用しないでください

    データベースが各行を調べて一致するかどうかを調べる必要があるため、JOINSには時間がかかります。 JOINでOR条件も使用する場合、データベースがレコードを照合するのに2倍の時間がかかります。前述のように、代わりにIN演算子を使用してください。


    上記のヒントがSQLクエリの高速化に役立つことを願っています。

    1. RedHatにsqlcmdとbcpをインストールする方法

    2. Oracleの行から列への変換

    3. EasysoftODBCドライバーとODBCINSTライブラリ

    4. オラクル-どのステートメントをコミットする必要がありますか?