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

Trong MySQL, làm thế nào để xây dựng chỉ mục để tăng tốc truy vấn này?

Để thực sự đưa ra câu trả lời, sẽ rất hữu ích nếu bạn đã có các chỉ mục hiện có, nhưng ...

Tất cả điều này là giả sử bảng 't' tồn tại và bạn cần thêm chỉ mục và hiện tại bạn chỉ có một chỉ mục duy nhất trên khóa chính của mình hoặc không có chỉ mục nào cả.

Chỉ mục bao trùm cho truy vấn sẽ mang lại hiệu suất tốt nhất cho nhu cầu của bạn, nhưng với bất kỳ chỉ mục nào, bạn phải hy sinh một số tốc độ chèn. Mức độ hy sinh đó quan trọng như thế nào phụ thuộc vào hồ sơ ứng dụng của bạn. Nếu bạn đọc chủ yếu từ bảng thì sẽ không có vấn đề gì nhiều. Nếu bạn chỉ có một vài chỉ mục, ngay cả tải ghi vừa phải cũng không thành vấn đề. Không gian lưu trữ hạn chế cho các bảng của bạn cũng có thể phát huy tác dụng ... Bạn cần đưa ra đánh giá cuối cùng về sự cân bằng và nếu nó là đáng chú ý. Điều tốt là nó khá liên tục. Thông thường, việc thêm một chỉ mục không làm chậm các lần chèn của bạn theo cấp số nhân mà chỉ theo tuyến tính.

Bất kể, đây là các tùy chọn của bạn để có hiệu suất được lựa chọn tốt nhất:

  1. Nếu c3 là khóa chính của bạn cho bảng t, bạn không thể làm gì tốt hơn trong truy vấn để làm cho nó nhanh hơn với một chỉ mục.
  2. Giả sử c1 là khóa chính của bạn t:

    ALTER TABLE t ADD INDEX covering_index (c3,c2);  
    
  3. Nếu c1 không phải là pk của bạn (và cũng không phải là c2), hãy sử dụng cái này:

    ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);  
    
  4. Nếu c2 là PK của bạn, hãy sử dụng cái này:

    ALTER TABLE t ADD INDEX covering_index (c3,c1);  
    
  5. Nếu dung lượng trên đĩa hoặc tốc độ chèn là một vấn đề, bạn có thể chọn thực hiện chỉ mục điểm. Bạn sẽ hy sinh một số hiệu suất, nhưng nếu bạn chèn quá nặng thì đó có thể là lựa chọn phù hợp:

    ALTER TABLE t ADD INDEX a_point_index (c3);  
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sqlite hay MySql? Làm thế nào để quyết định?

  2. Khi nào sử dụng MongoDB

  3. LỖI:Lỗi 1005:Không thể tạo bảng 'cat10e.recording' (errno:150)

  4. Cách xem tiến trình tải lên .csv trong MySQL

  5. Hiểu cấu trúc bản ghi MyISAM