Hai kiểu dữ liệu được xử lý gần như giống nhau. Có nhiều lý do khác có thể dẫn đến sự chậm chạp. (Nhưng không cái nào tôi biết về điều đó sẽ nói MEDIUMTEXT
kém hơn VARHAR
.)
Vậy ... Hãy xem liệu chúng ta có thể tăng tốc độ trang web ...
Đặt microtime(true)
xung quanh các cuộc gọi mysql - để đảm bảo rằng đó là MySQL, không phải PHP. "0,019 giây" có ý nghĩa; "1,5 - 2 giây" có vẻ như có điều gì đó đang xảy ra trong PHP.
Sử dụng InnoDB, không MyISAM. (Bất chấp những tuyên bố của bạn là ngược lại.)
Điều chỉnh một cách chính xác; hãy xem SHOW VARIABLES LIKE '%buffer%';
Bạn có bao nhiêu RAM? (Việc hoán đổi là rất tệ đối với hiệu suất.)
Bạn đang trả lại bao nhiêu hàng? Không thực tế khi có nhiều hơn vài chục trên một trang web, vì vậy hãy thêm ORDER BY...LIMIT...
.
Nếu giới hạn giao diện người dùng là 1000 ký tự, hãy sử dụng TEXT
hoặc VARCHAR(1000)
, không phải MEDIUMTEXT
. Nếu bạn đang cố gắng tăng lên đến 64K byte ( có khả năng 4K utf8mb4 ký tự ), sau đó sử dụng TEXT
.
Bạn cần điều này (với các cột theo thứ tự):
INDEX(part_id, language)
Nếu đã có nhiều "churn" (xóa và / hoặc cập nhật theo sau bởi nhiều lần chèn hơn) trong bảng MyISAM, dữ liệu có thể bị phân mảnh, do đó sẽ chậm. Điều này có thể xảy ra cho cả VARCHAR
và TEXT
. Điều này không xảy ra với InnoDB.