2010-08-05 27 views

Trả lời

14

Đây thực sự là cùng một loại câu hỏi như:

Tại sao phải mất thêm thời gian để đặt tất cả các cửa hàng tạp hóa của tôi trong đúng vị trí trong nhà bếp của tôi hơn để lại tất cả mọi thứ trong túi sau khi tôi đến thăm cửa hàng tạp hóa của tôi cửa hàng?

Điều này là do khi lưu trữ hàng tạp hóa của bạn, bạn muốn chúng ở vị trí đẹp, nổi tiếng để dễ dàng tìm thấy chúng sau đó.

Cơ sở dữ liệu phải làm như vậy.

  • Nếu bạn có bảng không có chỉ mục, chỉ có thể thêm dữ liệu mới ở cuối bảng.
  • Nếu bạn có chỉ mục, cơ sở dữ liệu phải thực hiện nhiều công việc hơn. Nó có lẽ sẽ vẫn đặt bản ghi ở cuối bảng, nhưng ngoài ra nó sẽ cập nhật chỉ mục của nó để đảm bảo rằng nếu bạn muốn tìm bản ghi đó sau đó, nó sẽ tìm thấy nó nhanh hơn mà không có chỉ mục.

Điều này cũng có nghĩa là việc thêm nhiều chỉ mục hơn nữa sẽ làm chậm thêm chèn.

Rõ ràng là bạn chỉ muốn tạo chỉ mục nếu bạn cũng sẽ sử dụng nó sau đó. Nếu bạn chỉ tạo một chỉ mục và sau đó bạn không sử dụng nó để cải thiện hiệu suất của một truy vấn, không cần phải có chỉ mục vì nó sẽ chỉ làm chậm các chèn và không cải thiện bất kỳ truy vấn nào.

+1

Tôi thích tương tự ;-) . –

+0

Để làm cho tương tự chính xác hơn về mặt đạo đức, tôi muốn nói nó giống như nhận được hai của tất cả các mặt hàng tạp hóa; một mục đi vào phòng đựng thức ăn theo bất kỳ thứ tự cũ nào, vật phẩm trùng lặp sẽ được đặt trên băng ghế nhà bếp theo thứ tự bảng chữ cái. Trừ khi, tất nhiên, bạn sử dụng một bảng được tổ chức chỉ mục, trong trường hợp đó bạn không bận tâm nhận được các mục cho phòng đựng thức ăn :) –

9

Tuyên bố INSERT phải thêm cả dữ liệu vào khối dữ liệu bảng và cập nhật bất kỳ chỉ mục nào mà bảng đã xác định.

Rõ ràng, nếu bạn có chỉ mục, trình chèn sẽ cần phải thực hiện thêm một số 'công việc' để cập nhật chỉ mục.

1

Chỉ mục cho phép bạn lưu trữ thêm thông tin (trong các khối chỉ mục) về dữ liệu giúp truy xuất dữ liệu dễ dàng hơn. Rõ ràng, bạn đang làm công việc bổ sung ban đầu để có lợi sau này (cho các lựa chọn).

0

Nếu bạn cần xóa một số dữ liệu ở giai đoạn sau từ bảng bạn đã chèn vào thì sẽ không có ý tưởng hay khi có chỉ mục trên bảng. Thời gian thêm để chèn dữ liệu vào bảng có thể được bù bằng các lần xóa chạy nhanh hơn trên bảng được lập chỉ mục (nếu các cột được lập chỉ mục được sử dụng trong mệnh đề xóa WHERE. ????

+0

Điều này không trả lời câu hỏi được yêu cầu. Ngoài ra, lời khuyên chung về việc sử dụng một chỉ mục (đặc biệt là không có bối cảnh cụ thể) là lời khuyên không tốt. –

Các vấn đề liên quan