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

Chọn tất cả các cột có hại cho hiệu suất không?

Vấn đề ở đây không phải là vấn đề của máy chủ cơ sở dữ liệu, mà chỉ là giao tiếp mạng. Bằng cách chọn tất cả các cột cùng một lúc, bạn đang yêu cầu máy chủ trả lại cho bạn, tất cả các cột cùng một lúc. Đối với các mối quan tâm về IO và tất cả những điều đó, chúng được giải quyết tốt trong câu hỏi và câu trả lời mà @Karamba đưa ra trong một nhận xét: select * so với select column . Nhưng đối với hầu hết các ứng dụng trong thế giới thực (và tôi sử dụng "ứng dụng" theo mọi nghĩa), mối quan tâm chính chỉ là lưu lượng mạng và mất bao lâu để tuần tự hóa, truyền, sau đó giải mã dữ liệu. Mặc dù thực sự, câu trả lời là giống nhau.

Vì vậy, việc kéo lại tất cả các cột là rất tốt, nếu bạn có ý định sử dụng tất cả chúng, nhưng điều đó có thể tốn thêm rất nhiều dữ liệu truyền, đặc biệt nếu bạn lưu trữ các chuỗi dài trong các cột của mình. Trong nhiều trường hợp, tất nhiên, sự khác biệt sẽ không thể phát hiện được và hầu hết chỉ là vấn đề nguyên tắc. Không phải tất cả, mà là một phần lớn đáng kể.

Nó thực sự chỉ là một sự đánh đổi giữa sự lười biếng nói trên của bạn (và tin tôi đi, tất cả chúng ta đều cảm thấy như vậy) bây giờ và hiệu suất quan trọng như thế nào thực sự là.

Điều đó đã nói lên tất cả, nếu bạn làm có ý định sử dụng tất cả các giá trị cột, tốt hơn hết bạn nên kéo tất cả chúng trở lại cùng một lúc, sau đó bạn đang gửi một loạt các truy vấn.

Hãy nghĩ về nó giống như thực hiện tìm kiếm trên web:bạn thực hiện tìm kiếm, bạn tìm thấy trang của mình và bạn chỉ cần một chi tiết. Bạn có thể đọc toàn bộ trang và biết mọi thứ về chủ đề này, hoặc bạn có thể chuyển sang phần về những gì bạn đang tìm kiếm và đã hoàn thành. Phương pháp thứ hai nhanh hơn rất nhiều nếu đó là tất cả những gì bạn muốn, nhưng nếu sau đó bạn sẽ phải tìm hiểu về các khía cạnh khác, tốt hơn hết bạn nên đọc chúng lần đầu tiên hơn là phải thực hiện lại tìm kiếm và tìm trang web để nói về nó.

Nếu bạn không chắc liệu mình có cần các giá trị cột khác trong tương lai hay không, thì đó là lời kêu gọi của bạn để thực hiện với tư cách là nhà phát triển cho trường hợp này có nhiều khả năng hơn.

Tất cả phụ thuộc vào ứng dụng của bạn là gì, dữ liệu của bạn là gì, cách bạn đang sử dụng nó và tầm quan trọng của hiệu suất thực sự là dành cho bạ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. Foreach chèn số lượng lớn PHP

  2. Truy vấn mysql like% chậm với chỉ mục toàn văn bản

  3. Cách so sánh chuỗi cho một khoảng trắng

  4. Làm thế nào để chạy các truy vấn SQL gốc trong cùng một giao dịch Hibernate?

  5. Sự cố khởi động máy chủ MySQL trên Mavericks