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

Postgres LIKE'...%'はインデックスを使用しません

    text_pattern_ops を使用してインデックスを作成している場合、PostgreSQLはこれを行います。 演算子、またはC照合を使用している場合。

    ランダムな他の照合を使用している場合、PostgreSQLはそれについて何も推測できません。非常に一般的な「en_US.utf8」照合でこれを観察してください。

    select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(x) order by x;
          x      
    -------------
     03.000221.1
     03.0002212
     03.000221.3
    

    これは当然、クエリでこの間違った答えにつながります:

    select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(id)
        where ((id >= '03.000221.'::text) AND (id < '03.000221.Z'::text))
         id      
    -------------
     03.000221.1
     03.0002212
     03.000221.3
    



    1. データベースのdplyrフィルター関数でSQL関数を渡します

    2. MySQLユーザーに最小限の特権を提供する

    3. MySQLは重複レコードを削除しますが、最新の状態に保ちます

    4. スプリングブートjpahibernateで>4<24の後にDbへの接続が切断される