โดยทั่วไปutf8_general_ciเร็วกว่าutf8_unicode_ciแต่ถูกต้องน้อยกว่า
นี่คือความแตกต่าง:
สำหรับการใด ๆ ชุดอักขระ Unicode การดำเนินการดำเนินการโดยใช้การเปรียบเทียบ _general_ci จะเร็วกว่าสำหรับการเปรียบเทียบ ตัวอย่างเช่นการเปรียบเทียบสำหรับการเปรียบเทียบ utf8_general_ci นั้นเร็วกว่า แต่ถูกต้องน้อยกว่าการเปรียบเทียบสำหรับ utf8_unicode_ci เหตุผลสำหรับสิ่งนี้คือ utf8_unicode_ci รองรับการแมปเช่นการขยาย นั่นคือเมื่อตัวละครตัวหนึ่งเปรียบเทียบเท่ากับการรวมกันของตัวละครอื่น ๆ ตัวอย่างเช่นในภาษาเยอรมันและภาษาอื่น ๆ “ ß” เท่ากับ“ ss” utf8_unicode_ci ยังรองรับตัวย่อและอักขระที่ละเว้น utf8_general_ci คือการเปรียบเทียบแบบดั้งเดิมที่ไม่รองรับการขยายตัวย่อหรือตัวอักษรที่เพิกเฉย มันสามารถทำการเปรียบเทียบแบบหนึ่งต่อหนึ่งระหว่างตัวละคร
อ้างอิงจาก:
http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
สำหรับคำอธิบายโดยละเอียดเพิ่มเติมโปรดอ่านโพสต์ต่อไปนี้จากฟอรั่ม MySQL:
http://forums.mysql.com/read.php?103,187048,188748
สำหรับ utf8_bin: ทั้งutf8_general_ciและutf8_unicode_ciทำการเปรียบเทียบแบบคำนึงถึงขนาดตัวพิมพ์ ในconstrast utf8_bin จะคำนึงถึงขนาดตัวพิมพ์ (ในความแตกต่างอื่น ๆ ) เนื่องจากเป็นการเปรียบเทียบค่าไบนารีของอักขระ
utf8
ใช้utf8mb4
แทนการรองรับ UTF-8 แบบเต็ม แสดงความคิดเห็นที่นี่เพราะคำตอบของคำถามยอดนิยมนี้ไม่ได้ตอบคำถามนี้ mathiasbynens.be/notes/mysql-utf8mb4