sql >> Databáze >  >> RDS >> Mysql

UTF-8 vs Latin1 mysql, indexy se nepoužívají na utf-8

Indexy lze použít pouze tehdy, když se řazení výrazu shoduje s řazením v indexovaném sloupci.

Pokud je výraz COERCIBILITY je nižší než u sloupce (tj. 2 ), řazení sloupce je přetypováno na řazení výrazu a index se nepoužívá.

Normálně mají literály COERCIBILITY z 4 a uživatelské proměnné 3 , takže by to neměl být problém.

Pokud však v JOIN smícháte různá řazení nebo UNION , pořadí obsazení není zaručeno.

V tomto případě byste měli poskytnout explicitní řazení pro sloupec, který odesíláte (s největší pravděpodobností chcete přenést latin1 na UTF8 ), a toto by mělo být seřazení sloupce, do kterého odesíláte:

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


  1. Problém s funkcemi a pohledy oken

  2. Jak najít záznam podle id a vybrat pár sloupců, ruby ​​na kolejích?

  3. java.sql.SQLException:Neplatná hodnota argumentu:java.io.NotSerializableException

  4. Spouštění php skriptu v javascriptu?