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

UTF-8とLatin1mysql、utf-8では使用されないインデックス

    インデックスは、式の照合がインデックス付きの列の照合と一致する場合にのみ使用できます。

    式のCOERCIBILITYの場合 列の値よりも低い(つまり、2 )、列の照合は式の照合にキャストされ、インデックスは使用されません。

    通常、リテラルにはCOERCIBILITYがあります 43のユーザー変数 、したがって、これは問題ではないはずです。

    ただし、JOINで異なる照合を混在させる場合 またはUNION 、キャストの順序は保証されません。

    この場合、キャストする列に明示的な照合を提供する必要があります(おそらく、latin1をキャストする必要があります UTF8へ )、これはキャスト先の列の照合である必要があります:

    SELECT  *
    FROM    utf_table
    JOIN    latin_table
    ON      utf_column = latin_column COLLATE UTF8_GENERAL_CI
    


    1. URLパラメータに基づいてSQLクエリを生成する

    2. 2つのクエリの結果を順序付けと組み合わせるにはどうすればよいですか?

    3. LIKE演算子がSQLiteでどのように機能するか

    4. プリペアドステートメントを使用したMySQLのLIMITキーワード