Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

UTF-8 so với mysql Latin1, các chỉ mục không được sử dụng trên utf-8

Chỉ có thể được sử dụng chỉ khi đối chiếu của biểu thức khớp với đối chiếu trên cột được lập chỉ mục.

Nếu COERCIBILITY của biểu thức thấp hơn cột (đó là 2 ), đối chiếu của cột được ghép với biểu thức và chỉ mục không được sử dụng.

Thông thường, các ký tự có COERCIBILITY trong tổng số 4 và các biến người dùng của 3 , vì vậy đây không phải là vấn đề.

Tuy nhiên, nếu bạn kết hợp các ảnh ghép khác nhau trong một JOIN hoặc UNION , thứ tự diễn viên không được đảm bảo.

Trong trường hợp này, bạn nên cung cấp đối chiếu rõ ràng với cột mà bạn đang truyền (hầu hết có thể là bạn muốn truyền latin1 thành UTF8 ), và đây phải là đối chiếu của cột bạn đang truyền tới:

SELECT  *
FROM    utf_table
JOIN    latin_table
ON      utf_column = latin_column COLLATE UTF8_GENERAL_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. Làm thế nào tôi có thể nhận được giá trị bên ngoài vòng lặp foreach trong tình huống này?

  2. Biến hệ thống MESSAGE_TEXT không hoạt động với câu lệnh SIGNAL trong Mysql?

  3. Mã lỗi:1290. Máy chủ MySQL đang chạy với tùy chọn --secure-file-priv nên nó không thể thực thi câu lệnh này

  4. CHỌN VÀO OUTFILE không thể ghi vào tệp

  5. Điều này có thể nhận được tổng số hàng đếm với giới hạn bù không