Tại sao các câu lệnh Chèn hoạt động chậm hơn trên một bảng được lập chỉ mục?ORACLE Chèn hiệu suất trên các bảng được lập chỉ mục
Trả lời
Đâ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.
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.
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).
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. ????
Đ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. –
- 1. MySQL Chèn hiệu suất giảm xuống trên một bảng lớn
- 2. Hiệu suất tạo chỉ mục
- 3. Hiệu suất Mysql trên bảng 6 triệu
- 4. Chèn hiệu suất có và không có Chỉ số
- 5. hiệu suất cao hibernate chèn
- 6. Hiệu suất truy vấn chèn Sql
- 7. Mysql: Chèn hiệu suất INNODB vs MYISAM
- 8. Hiệu suất chèn hàng loạt Codeigniter
- 9. Rebinding ký hiệu cho monads được lập chỉ mục
- 10. Hiệu suất tìm kiếm Sitecore khi lập chỉ mục lại và tùy chỉnh IndexingProvider
- 11. Sqlite3: Vô hiệu hóa chỉ mục khóa chính khi chèn?
- 12. Chèn hàng loạt chậm cho bảng có nhiều chỉ mục
- 13. Mongodb lập chỉ mục các trường nhúng (ký hiệu chấm)
- 14. về Oracle hiệu suất chèn song song
- 15. Hiệu suất của danh sách (...). Chèn (...)
- 16. Cách cải thiện hiệu suất trên chỉ mục nhóm tìm kiếm
- 17. Hiệu suất chèn hàng loạt JDBC
- 18. Sql Server 2008 R2 DC Chèn hiệu suất thay đổi
- 19. Tại sao sử dụng IN (...) khi chọn trên các trường được lập chỉ mục, sẽ giết hiệu suất của truy vấn SELECT?
- 20. Tại sao hiệu suất bị suy giảm khi sử dụng trường không được lập chỉ mục trong mệnh đề SELECT?
- 21. Các bảng tham gia có nên được tạo ra dưới dạng các bảng có tổ chức chỉ mục (chỉ mục được nhóm) không?
- 22. Tìm kiếm Titan trên khóa được lập chỉ mục là cực kỳ chậm?
- 23. Hiệu suất Mongodb trên Windows
- 24. Hiệu suất Orchard trên Azure
- 25. Hiệu ứng hệ thống trên hiệu suất
- 26. Chỉ mục trên Varchar có tạo sự khác biệt về hiệu suất không?
- 27. Tắt lập chỉ mục trên netbeans
- 28. Truy vấn MySQL rất chậm. Đếm (*) trên cột được lập chỉ mục
- 29. Tại sao tạo chỉ mục mới này cải thiện hiệu suất nhiều khi chỉ mục hiện tại bao gồm tất cả các cột trong chỉ mục mới?
- 30. Lập chỉ mục các trường boolean
Tôi thích tương tự ;-) . –
Để 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 :) –