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

hình phạt hiệu suất của chuỗi làm khóa chính?

DB cần duy trì B-Tree (hoặc một cấu trúc tương tự) với khóa theo cách để chúng sắp xếp.

Nếu khóa được băm và lưu trữ trong B-Tree, bạn có thể nhanh chóng kiểm tra tính duy nhất của khóa - khóa vẫn có thể được tra cứu một cách hiệu quả. Nhưng bạn sẽ không thể tìm kiếm hiệu quả cho phạm vi dữ liệu (ví dụ:với LIKE ) bởi vì B-Tree không được sắp xếp theo giá trị Chuỗi nữa.

Vì vậy, tôi nghĩ rằng hầu hết DB thực sự lưu trữ Chuỗi trong B-Tree, có thể (1) chiếm nhiều không gian hơn hơn giá trị số và (2) yêu cầu Cây B phải được cân bằng lại nếu các khóa được chèn theo thứ tự tùy ý (không có khái niệm tăng giá trị như với pk số).

Hình phạt trong thực tế có thể dao động từ không đáng kể đến rất lớn. Tất cả phụ thuộc vào cách sử dụng, số lượng hàng, kích thước trung bình của khóa chuỗi, các truy vấn tham gia bảng, v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate:Đã tìm thấy bế tắc khi cố gắng lấy khóa

  2. Làm thế nào để gọi mã Java từ MySQL?

  3. Tự động tải dữ liệu trên cuộn div bằng php, mysql, jquery và ajax

  4. Số cột của mysql.proc bị sai. Dự kiến ​​là 20, tìm thấy 16. Bảng có thể bị hỏng

  5. Tôi nhận được nhiều select @@ session.tx_read_only, một cái có làm như vậy không?