Tôi có nên tách các cột được cập nhật thường xuyên?


7

Tôi có một usersbảng chứa thông tin của người dùng và một cột có tên creditsthường xuyên được cập nhật.

  • Trên trang chỉ mục tôi đang hiển thị danh sách người dùng có thông tin người dùng cơ bản nhưng tôi không cần tín dụng.

  • Trên trang chi tiết tôi cũng đang hiển thị các khoản tín dụng với thông tin người dùng.

Hai hoạt động chính là dày đặc trong dự án. Hoạt động đầu tiên là SELECThoạt động trên trang chỉ mục. Hoạt động thứ hai là UPDATEhoạt động trên cột tín dụng. creditscột không được lập chỉ mục nhưng vì nó được cập nhật thường xuyên, nên nó có ảnh hưởng đến các cột được lập chỉ mục trên usersbảng không? Nếu vậy, tôi nghĩ rằng tôi nên tách creditscột thành một bảng và chỉ tham gia nó khi được yêu cầu. Làm điều này, tôi có thể cải thiện SELECThiệu suất trên trang chỉ mục không?

Ngoài ra, tôi đang sử dụng MySQL. Tôi nên sử dụng loại cấu trúc bảng nào cho các cột được cập nhật thường xuyên?

Câu trả lời:


11

Có vẻ như những gì bạn muốn là cái gọi là Quét chỉ mục lục cho truy vấn trên trang "chỉ mục". Điều đó có nghĩa là bạn có tất cả dữ liệu (cột) mà bạn chọn trên trang chỉ mục trong chỉ mục bạn đang sử dụng cho truy vấn này. Điều này làm cho nó không cần thiết để đi đến bảng khi thực hiện truy vấn này.

Thí dụ:

SELECT name, basic, information
  from users
 where filter = something 

(Tôi chỉ cho rằng bạn đang sử dụng một số bộ lọc).

Nếu bạn tạo chỉ mục sau:

 ALTER table users add index (filter, name, basic, information);

MySQL có thể thực hiện truy vấn trên mà không cần thực sự đọc bất cứ thứ gì từ bảng (chỉ có chỉ số là do đó, Quét chỉ mục). Nói cách khác, số lượng cột trong bảng không ảnh hưởng đến hiệu suất của truy vấn này.

Bạn có thể nhận ra Quét chỉ mục bằng các sự hiện diện của "Sử dụng chỉ mục" trong cột Bổ sung của kế hoạch thực hiện (giải thích).

Nếu bạn cập nhật các cột không phải là một phần của chỉ mục này, thì chỉ mục không cần phải cập nhật.

Một số liên kết đến trang web của tôi http://use-the-index-luke.com/


0

Nếu người sử dụng các khoản tín dụng là mối quan hệ một-một, sau đó bạn có thể giữ creditstrong usersbảng riêng của mình. Tôi KHÔNG nghĩ rằng nó sẽ ảnh hưởng đến hiệu suất SELECTtruy vấn trong trang chỉ mục. Bạn chỉ có thể lấy các cột bạn muốn. Bình thường hóa bảng là tốt, nhưng nếu bạn bình thường hóa cho tất cả các cột như thế này, hiệu suất sẽ chậm hơn nhiều khi bạn tham gia vào tất cả các bảng này.


-1

Có bạn đúng. Bạn nên tách cột tín dụng khỏi bảng để làm cho chi tiết hoạt động hiệu quả. Và cố gắng không tạo các chỉ mục của các bảng được sử dụng thường xuyên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.