To zależy od tego, czego potrzebujesz.
utf8_bin
porównywanie porównuje ciągi w oparciu wyłącznie o ich punkt kodowy
Unicode wartości. Jeśli wszystkie punkty kodowe mają te same wartości, ciągi są równe. Jednak to się rozpada, gdy masz ciągi o różnym składzie do łączenia znaków (złożonych i rozłożonych) lub znaków, które są kanonicznie równoważne, ale nie mają tej samej wartości punktu kodowego. W niektórych przypadkach użycie utf8_bin
spowoduje, że ciągi nie będą pasować, gdy tego oczekujesz. Teoretycznie utf8_bin
jest najszybszy, ponieważ nie stosuje się normalizacji Unicode do ciągów, ale może nie być tym, czego chcesz.
utf8_general_ci
stosuje normalizację Unicode przy użyciu reguł specyficznych dla języka i porównuje ciągi bez uwzględniania wielkości liter. utf8_general_cs
robi to samo, ale porównuje ciągi z uwzględnieniem wielkości liter.