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

Soft_delete của Laravel có cần chỉ mục trên MySQL không?

Cột deleted_at không phải là một ứng cử viên chỉ số tốt. Tôi sẽ cố gắng giải thích rõ hơn so với nhận xét:các chỉ mục chỉ hữu ích khi bản số của chúng tương đối cao. Cardinality là một số mô tả tính duy nhất của chỉ mục trong tập dữ liệu. Điều đó có nghĩa là tổng số bản ghi chia cho tổng số bản ghi duy nhất.

Ví dụ, cấp số của khóa chính là 1. Mọi bản ghi đều chứa giá trị duy nhất cho khóa chính. 1 cũng là con số cao nhất. Bạn có thể coi đây là "100%".

Tuy nhiên, một cột như delete_at không có giá trị như vậy. Những gì Laravel làm với Delete_at là kiểm tra xem nó có hay không null. Điều đó có nghĩa là nó có hai giá trị có thể. Các cột chứa hai giá trị có số lượng cực kỳ thấp, sẽ giảm khi số lượng bản ghi tăng lên.

Bạn có thể lập chỉ mục một cột như vậy, nhưng nó sẽ không giúp ích được gì. Điều gì sẽ xảy ra là nó có thể làm mọi thứ chậm lại và chiếm dung lượng.

TL; DR:không, bạn không phải lập chỉ mục cho cột đó, chỉ mục sẽ không có tác động có lợi đến hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng ALTER TABLE AUTO_INCREMENT =$ x

  2. # 1064 -Bạn gặp lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn

  3. MYSQL - Không thể tạo khóa ngoài

  4. Đường ray chọn bản ghi ngẫu nhiên

  5. Danh sách các chỉ định định dạng ngày trong MySQL