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

Lập chỉ mục cho phân trang bộ phím trong mysql

Tôi đã gặp phải vấn đề này trước đây. Đây là phân tích của tôi về nó.

  • Nó xảy ra trong MySQL 5.7 và 8.0, nhưng dường như không phải trong các phiên bản cũ hơn và không phải trong MariaDB.

  • "Giải pháp" tôi thích là thay đổi các chỉ mục như vậy:

       INDEX(company_id)      -- DROP this
       INDEX(company_id, id)  -- ADD this
    

Mặc dù chỉ mục 2 cột về mặt lý thuyết giống hệt với chỉ mục một cột cho InnoDB (giả sử id là PK`), Trình tối ưu hóa dường như bỏ qua thực tế này trong một số tình huống .

Ngoài ra, tôi muốn thêm PK một cách rõ ràng khi tôi thấy cần . Điều này báo hiệu cho những người đọc giản đồ trong tương lai (bao gồm cả tôi) rằng một số truy vấn được hưởng lợi từ PK được thêm vào.

Tôi vẫn chưa tìm thấy trường hợp "hợp nhất chỉ mục nào giao nhau" nhanh hơn chỉ mục tổng hợp tương đương.

Tôi không thích sử dụng "gợi ý" chỉ mục vì sợ rằng phân phối dữ liệu sẽ thay đổi trong tương lai và "gợi ý" của tôi sẽ khiến mọi thứ tồi tệ hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa lỗi PHP PEAR

  2. MySQL FIND_IN_SET () không hoạt động như mong đợi

  3. các ký tự đặc biệt trong truy vấn sql

  4. Đặt giá trị =giá trị +1 trong bookshelf.js

  5. Sắp xếp dữ liệu dựa trên Dấu thời gian mysql + PHP