Web projelerimde UTF-8 kullanmaya baÅŸladığımdan beri merak ettiÄŸim bir konu vardı. O da MySQL’deki collation deÄŸerlerinden utf8_unicode_ci ve utf8_general_ci arasında ne tür farklar olduÄŸu idi. Biraz araÅŸtırma sonucu aÅŸağıdaki sonuçlara ulaÅŸtım. Bakınız MySQL’deki iki collation deÄŸeri arasındaki farklar ve birbirlerine üstünlükleri neymiÅŸ?
- utf8_general_ci collation tipi utf8_unicode_ci tipine göre daha basit bir tip ve genel çalışma şekli de şu şekilde:
Bazı dillerde yer alan özel harflerde bulunan accent denilen şapkaları vs. kaldırıp harfi büyük harfe çeviriyor ve o harf grupları için belirlenen temel harfin koduna göre karşılaştırma yapıyor.
Örnek olarak, ÀÃÃ…Ã¥Äă harflerindeki ÅŸapkaları kaldırıp temel olan A harfi ile karşılaÅŸtırıyor.
Halbuki utf8_unicode_ci tipi daha geniş bir Unicode karşılaştırma tablosu (DUCET) kullanıyor.
- İkinci olarak, utf8_general_ci Œ, ß benzeri aslında harf grubu tipinde olan harfleri desteklememekte ve bu tip harfleri sıralarken tek karaktermiş gibi algılayıp yanlış sıralayabiliyor.
Ancak utf8_unicode_ci, bu tip harf gruplarını doğru algılayıp genellikle çok daha doğru bir sıralama yapmakta.
- Bir baÅŸka fark da desteklenen dil tipleri. utf8_general_ci sadece belli dil gruplarını destekleyebilirken utf8_unicode_ci çok daha geniÅŸ dil gruplarını desteklemekte. Örnek olarak utf8_general_ci Kiril alfabesi kullanmakta olan dillerden sadece Rusça ve Bulgarca’yı desteklerken utf8_unicode_ci ayni dil grubundan Makedonca, Ukraynaca, Sırp ve Belarus dilleri gibi diÄŸer dilleri de desteklemekte ve doÄŸru biçimde sıralayabilmekte.
utf8_general_ci‘nin utf8_unicode_ci‘ye olan üstünlüğüne gelecek olursak o da utf8_unicode_ci‘ye göre daha hızlı olması. Dolayısıyla performans gibi dertleriniz varsa utf8_general_ci, sıralama ile ilgili sorunlarınız varsa ve bu sizin için daha önemli ise utf8_unicode_ci kullanmanız daha doÄŸru olacaktır.
Kısaca collation seçimi ihtiyaçlarınıza ve öncelik listenize göre değişiklik gösterebilmekte.
Hani sizin de aklınıza bunlar arasındaki farklar nedir diye bir konu takılmışşa
Kaynaklar:
* http://forums.mysql.com/read.php?103,187048,188748#msg-188748
* http://www.collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html
* http://www.collation-charts.org/mysql60/mysql604.utf8_unicode_ci.european.html