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

Có chính xác để lập chỉ mục tất cả các cột trong cơ sở dữ liệu mysql không?

Không, bạn không lập chỉ mục tất cả các cột. Bạn lập chỉ mục các cột liên quan cụ thể đến WHERE và đôi khi nếu chúng liên quan đến một ORDER BY .

Trong trường hợp này, bạn muốn có một chỉ mục trên type :

SELECT name FROM users WHERE type='admin'

Trong trường hợp này, bạn muốn một chỉ mục trên active,type :

SELECT name FROM users WHERE type='admin' AND active=1

Trong trường hợp này, bạn có thể muốn một chỉ mục trên active,type,name :

SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

Bạn càng thêm nhiều chỉ mục thì ghi chậm hơn nhưng đọc sẽ nhanh hơn. Đây là một sự đánh đổi kinh điển. Đánh giá cẩn thận những chỉ số bạn cần và chỉ áp dụng chúng nếu có lợi ích hữu hình. Đừng chỉ tát họ vì bạn cảm thấy như họ nên ở đó.

Trên các bảng siêu nhỏ, những bảng có <1000 hàng, chỉ mục sẽ không giúp ích nhiều vì việc quét bảng sẽ không mất nhiều thời gian. Đối với bất kỳ điều gì không tầm thường, chúng đều rất cần thiết.

Nếu bạn đang gặp vấn đề về hiệu suất, tôi khuyên bạn nên cho rằng lược đồ của bạn là trở ngại lớn nhất, không phải là việc thiếu chỉ mục.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẢNH BÁO SqlExceptionHelper:143 - Lỗi SQL:0, SQLState:08S01- SqlExceptionHelper:144 - Lỗi liên kết truyền thông

  2. MySql - Cách nối hai bảng nhưng có giá trị không chính xác nhưng tương tự

  3. Cập nhật một hàng cụ thể trong bảng bằng nút

  4. Các biến MySQL lưu trữ tên cơ sở dữ liệu

  5. Làm thế nào để có được bản ghi khác biệt từ bảng mysql?