Vincent đưa ra một số điểm tuyệt vời về sự cẩn thận của IOT, nhưng bạn cũng có thể nhận được một số lợi ích đáng kể từ chúng.
Cá nhân tôi nghĩ rằng chúng được sử dụng đáng kể trong Oracle và nên được xem xét rộng rãi hơn nhiều - không chỉ là giải pháp khả thi cho các vấn đề về hiệu năng. Vì bạn phải tạo lại bảng để chuyển đổi giữa IOT và heap, đây là một thay đổi khó có thể xảy ra trên cơ sở dữ liệu luôn được sử dụng nhiều, trừ khi các vấn đề về hiệu năng nghiêm trọng.
Martin Widlake có một loạt bài viết tuyệt vời về IOT. Có một số lợi ích đáng kể bạn có thể nhận được bằng cách sử dụng chúng:
- Giảm đáng kể số lần đọc IO vật lý và logic
- Sử dụng hiệu quả hơn bộ đệm bộ đệm, có thể có lợi cho hiệu năng toàn hệ thống
- Đã lưu không gian khi bạn chỉ duy trì một chỉ mục, không phải là một bảng (trừ khi bạn có các phân đoạn tràn)
Tuy nhiên, để có được những lợi ích này, bạn cần các bảng trong đó bạn (gần như) luôn bao gồm (các) cột hàng đầu của khóa chính trong các truy vấn và bạn có thể sẽ tìm nạp nhiều hàng cùng một lúc. Một số ví dụ phổ biến của các bảng như vậy là:
- Nhiều chi tiết như thường thấy trong các đơn đặt hàng - đơn hàng, hóa đơn - dòng hóa đơn, v.v.
- Các bảng có độ phân giải nhiều-nhiều thường được truy vấn "một chiều". ví dụ: trong một
customer_addresses
bảng, việc tìm tất cả các địa chỉ cho một khách hàng, thay vì tất cả các khách hàng cho một địa chỉ là điều phổ biến hơn nhiều.
Một nhược điểm là việc chèn dữ liệu chậm hơn, do đó bạn cần cân nhắc chi phí và lợi ích. Cuối cùng, việc tìm hiểu dữ liệu của bạn và hiểu cách sử dụng dữ liệu sẽ hướng dẫn quyết định.