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

Skutki aktualizacji tabeli z wierszami od utf8_turkish_ci do utf8_general_ci?

Dane Twoich kolumn są przechowywane przy użyciu zestawu znaków. W tym przypadku wydaje się, że jest to utf8.

Kiedy operujesz na tych kolumnach (wykonując na przykład porównania równości lub porządkowanie), MySQL stosuje sortowanie. Każda kolumna ma domyślne sortowanie, które dziedziczy z domyślnego sortowania tabeli.

Indeksy mają wbudowane domyślne sortowanie kolumny, dzięki czemu mogą działać wydajnie.

Możesz wykonać porównanie równości, które jest kwalifikowane przez sortowanie. Na przykład w JOIN możesz określić

ON (turkish.village_name COLLATE utf8_general_ci) = euro.village_name

a może

ON turkish.village_name = (euro.village_name COLLATE utf8_turkish_ci)

To powinno wyeliminować nielegalną mieszankę zestawień bez konieczności zmiany tabeli. Może to pomóc w uniknięciu zmiany bazy danych, o którą pytasz. Ale uważaj, używając COLLATE kwalifikator może uniemożliwić użycie indeksu. Jeśli masz dużą tabelę i polegasz na indeksach, aby uzyskać wydajność, może to być nieprzydatne.

Co się stanie, jeśli zmienisz tabele, aby zmienić domyślne sortowanie?

  1. Twoje dane nie ulegną zmianie (chyba że zmienisz również zestaw znaków). To dobrze.
  2. Wszelkie indeksy obejmujące kolumny z sortowaniem zostaną odtworzone.
  3. Twoje porównania i zamówienia mogą ulec zmianie. Nie znam tureckiego, więc nie mogę powiedzieć, co może się zepsuć. Ale na przykład w języku hiszpańskim litery N i Ñ nie są takie same. N pojawia się przed Ñ w zestawieniu hiszpańskim, ale w zestawieniu ogólnym są traktowane tak samo. Może istnieć jakiś aspekt alfabetu tureckiego, który działa tak samo, więc Twoje ORDER BY wyniki będą nieprawidłowe.

Ale możesz to naprawić, określając COLLATE modyfikator w Twoim ORDER BY klauzula.

ORDER BY (euro.village_name COLLATE utf8_turkish_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. NULL w MySQL (wydajność i pamięć masowa)

  2. Wyczerpano dozwolony rozmiar pamięci 67108864 bajtów

  3. jak wyróżnić wyniki wyszukiwania

  4. Mysql Search Traktuj okresy jak spacje

  5. Ustaw i zweryfikuj wersję SSL/TLS używaną w połączeniu Python MySQL