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

Thay đổi từ varchar thành mediumtext gây ra sự suy giảm hiệu suất

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ả VARCHARTEXT . Điều này không xảy ra với InnoDB.




  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 cách nào để khôi phục toàn bộ đặc quyền của người dùng gốc MySQL?

  2. Chỉ mục đa ngôn ngữ với Laravel Scout và Algolia

  3. Kiểm tra kết nối cơ sở dữ liệu Entity Framework

  4. Làm cách nào để xếp hạng các giá trị mảng với các giá trị trùng lặp và bỏ qua một số vị trí nếu có sự ràng buộc?

  5. Sử dụng vai trò mới trong MySQL 8