Mysql
 sql >> Baza danych >  >> RDS >> Mysql

UTF-8 vs Latin1 mysql, indeksy nie są używane w utf-8

Indeksy mogą być używane tylko wtedy, gdy sortowanie wyrażenia jest zgodne z indeksowaną kolumną.

Jeśli COERCIBILITY wyrażenia jest niższy niż w kolumnie (czyli 2 ), sortowanie kolumny jest rzutowane na zestawienie wyrażenia, a indeks nie jest używany.

Normalnie literały mają COERCIBILITY z 4 i zmienne użytkownika z 3 , więc nie powinno to stanowić problemu.

Jeśli jednak zmieszasz różne sortowania w JOIN lub UNION , kolejność obsady nie jest gwarantowana.

W takim przypadku powinieneś podać jawne sortowanie do kolumny, którą przesyłasz (najprawdopodobniej chcesz rzutować latin1 do UTF8 ) i powinno to być zestawienie kolumny, do której przesyłasz:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL, aby uzyskać sumę wszystkich wartości kolumn w ostatnim wierszu zestawu wyników wraz z sumą wierszy (grupuj według)

  2. Jak wyprowadzić dane przy użyciu $stmt->fetch(PDO::FETCH_ASSOC);

  3. Jak programowo tworzyć bazy danych MySQL na współdzielonych planach hostingowych Linux

  4. Uzupełnianie początku pola mysql INT zerami

  5. MySql — sposób na aktualizację fragmentu ciągu?