Mysql
 sql >> база данни >  >> RDS >> Mysql

Ефекти от актуализиране на таблица с редове от utf8_turkish_ci на utf8_general_ci?

Данните на вашите колони се съхраняват с помощта на набор от знаци. В този случай изглежда, че е utf8.

Когато работите с тези колони (правейки например сравнения за равенство или подреждане), MySQL използва съпоставка. Всяка колона има сортиране по подразбиране, което наследява от сортирането по подразбиране на таблицата.

Индексите имат съпоставяне по подразбиране на колоната, вградено в тях, така че да могат да функционират ефективно.

Можете да направите сравнение на равенство, което е квалифицирано чрез съпоставка. Например в JOIN можете да посочите

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

или може би

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

Това трябва да елиминира вашата незаконна комбинация от сравнявания, без да се налага да променяте таблицата си. Това може да ви помогне да избегнете промяната в базата данни, за която питате. Но внимавайте, като използвате COLLATE квалификатор може да отмени използването на индекс. Ако имате голяма таблица и разчитате на индекси за ефективност, това може да е безполезно.

И така, какво ще се случи, ако промените вашите таблици, за да промените сортирането по подразбиране?

  1. Вашите данни няма да се променят (освен ако не промените и набора от знаци). Това е добре.
  2. Всички индекси, включващи колони със съпоставки, ще бъдат генерирани отново.
  3. Вашите сравнения и подреждане може да се променят. Не знам турски и не мога да ти кажа какво може да се счупи. Но, например, на испански буквитеN и С не са еднакви. Н идва преди Ñ в испанско съпоставяне, но в общото съпоставяне те се третират като едно и също. Може да има някои аспекти на турската азбука, които работят по същия начин, така че вашият ORDER BY резултатите ще бъдат неправилни.

Но можете да поправите това, като посочите COLLATE модификатор във вашия ORDER BY клауза.

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. Заявка със сложни критерии:използване на JPA вместо NativeQuery

  2. PHP INSERT променлив брой записи в mysql от html формуляр

  3. Как да конвертирате от дата в unix_timestamp с помощта на javascript

  4. Mysql заявка за изтриване на дублирани коментари на Wordpress?

  5. Как да разположите MySQL в Ubuntu и напълно управляван