phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Co się stanie z istniejącymi danymi, jeśli zmienię sortowanie kolumny w MySQL?

Artykuł http://mysqldump.azundris.com/archives/60 -Obsługa-zestawów-znaków.html omawia to szczegółowo, a także pokazuje, co się stanie.

Pamiętaj, że mieszasz ZESTAW ZNAKÓW (właściwie kodowanie) z UKŁADANIEM.

Zestaw znaków definiuje fizyczną reprezentację ciągu w bajtach na dysku. Możesz to uczynić widocznym, używając funkcji HEX(), na przykład SELECT HEX(str) FROM t WHERE id = 1 aby zobaczyć, jak MySQL przechowuje bajty twojego ciągu. To, co MySQL dostarcza tobie, może być różne, w zależności od zestawu znaków twojego połączenia, zdefiniowanego za pomocą SET NAMES .... .

Sortowanie to porządek sortowania. Zależy to od zestawu znaków. Na przykład Twoje dane mogą być w zestawie znaków latin1, ale mogą być uporządkowane zgodnie z jednym z dwóch niemieckich porządków sortowania latin1_german1_ci lub latin1_german2_ci. W zależności od wyboru umlauty, takie jak ö, będą sortowane jako oe lub jako o.

Kiedy zmieniasz zestaw znaków, dane w twojej tabeli muszą zostać przepisane. MySQL odczyta wszystkie dane i wszystkie indeksy w tabeli, utworzy ukrytą kopię tabeli, która tymczasowo zajmuje miejsce na dysku, a następnie przeniesie starą tabelę do ukrytej lokalizacji, przesunie ukrytą tabelę na miejsce, a następnie usunie stare dane, zwalniając więcej miejsca na dysku. Przez pewien czas będziesz potrzebować do tego dwa razy więcej miejsca.

Gdy zmieniasz sortowanie, zmienia się kolejność sortowania danych, ale nie same dane. Jeśli zmieniana kolumna nie jest częścią indeksu, nie trzeba nic robić poza przepisywaniem pliku frm, a wystarczająco najnowsze wersje MySQL nie powinny robić więcej.

Kiedy zmieniasz sortowanie kolumny, która jest częścią indeksu, indeks musi zostać przepisany, ponieważ indeks jest posortowanym fragmentem tabeli. To ponownie uruchomi opisaną powyżej logikę kopiowania tabeli ALTER TABLE.

MySQL stara się zachować dane, robiąc to:Dopóki dane, które posiadasz, mogą być reprezentowane w docelowym zestawie znaków, konwersja nie będzie stratna. Ostrzeżenia będą drukowane w przypadku obcinania danych, a dane, których nie można przedstawić w docelowym zestawie znaków, zostaną zastąpione przez ?



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak zaimportować plik Excel do bazy danych mysql za pomocą phpmyadmina?

  2. Jak wyeksportować tabelę do Excela z bazy mysql?

  3. Co tak naprawdę powoduje, że wersja biblioteki PHP MySQL różni się od wersji serwera MySQL?

  4. Statystyka zapytania zajmuje 99% czasu zapytania

  5. Nowa koncepcja bezpieczeństwa xampp:Błąd zakazu dostępu 403 - Windows 7 - phpMyAdmin