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

MySQL có sử dụng các chỉ mục hiện có để tạo chỉ mục mới không?

Không, sẽ không.

Về mặt lý thuyết, một chỉ mục trên (site, product, value, id) có mọi thứ cần thiết để tạo chỉ mục trên bất kỳ tập hợp con nào trong số các trường này (bao gồm các chỉ số trên (product, value, id)(value, id) ).

Tuy nhiên, việc tạo chỉ mục từ chỉ mục phụ không được hỗ trợ.

Đầu tiên, MySQL không hỗ trợ quét chỉ mục đầy đủ nhanh (tức là quét một chỉ mục theo thứ tự vật lý hơn là logic), do đó làm cho một đường dẫn truy cập chỉ mục đắt hơn so với bảng đọc. Đây không phải là vấn đề đối với InnoDB , vì bản thân bảng luôn được nhóm lại.

Thứ hai, thứ tự bản ghi trong các chỉ mục này hoàn toàn khác nhau nên dù sao thì các bản ghi cũng cần được sắp xếp.

Tuy nhiên, vấn đề chính với tốc độ tạo chỉ mục trong MySQL là nó tạo ra thứ tự trên trang web (chỉ cần chèn từng bản ghi vào một B-Tree ) thay vì sử dụng một nguồn được sắp xếp trước. Như @Daniel đã đề cập, việc tạo chỉ mục nhanh chóng giải quyết được vấn đề này. Nó có sẵn dưới dạng một plugin cho 5.1 và được cài đặt sẵn trong 5.5 .



  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 để thêm cột vào bảng làm việc bằng thủ tục mới được lưu trữ

  2. nhận giá trị của một cột bảng tổng hợp bổ sung laravel

  3. Cách tạo người dùng trong MySQL

  4. Cách sử dụng GROUP BY và ORDER BY cùng nhau trong LARAVEL 5.6

  5. Làm cách nào để đặt lại MySQL AutoIncrement bằng cách sử dụng giá trị MAX từ một bảng khác?