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

WHERE句に多数の列があるクエリでインデックスを作成する対象

    WHEREが何であるかを理解する必要があります このクエリで使用する句、それぞれが発生する頻度、および各条件の選択性。

    • 必要がない限り、めったに発生しないクエリのインデックスを作成しないでください。

    • =で発生する列から始めて、複数列のインデックスを使用します 比較。

    • 複数列インデックスの列の順序については、クエリで単独で使用される列から始めます(インデックスは、インデックスの先頭にある場合、一部の列のみでクエリに使用できます)。

    • genderのように、選択性の低い列は省略できます。 。

    たとえば、上記のクエリで、すべてが頻繁で、すべての列が選択的である場合、これらのインデックスは適切です。

    ... ON apartments (city_id, rooms, size)
    
    ... ON apartments (area_id, ad_type, price)
    
    ... ON apartments (area_id, ad_type, published_at)
    

    これらのインデックスは、WHEREにも使用できます。 area_idのみの句 またはcity_id それらの中で。

    インデックスが多すぎるのは悪いことです。

    上記の方法でインデックスが多すぎる場合、たとえばユーザーはWHEREの任意の列を選択できるためです 条項では、個々の列、または定期的に一緒になる列のペアにインデックスを付けることをお勧めします。

    そうすれば、PostgreSQLはビットマップインデックススキャンを選択できます。 1つのクエリに対して複数のインデックスを組み合わせる。これは、通常のインデックススキャンよりも効率的ではありません。 、ただし通常はシーケンシャルスキャンよりも優れています 。



    1. SQLiteはNULLです

    2. PostgreSQLでSSLを有効にする方法

    3. MVC3アプリケーションでフォーム認証を使用してOracleデータベースを使用する

    4. パート1:MariaDBサーバーとTensorFlowを使用した画像分類–概要