Có bất kỳ lý do để sử dụng chỉ mục cho các bảng rất nhỏ (tối đa 1000 hàng) không?


9

Trong phát triển ứng dụng Tôi có rất nhiều các bảng mà cửa hàng "nhỏ" số lượng dữ liệu (thường là 10-40 giá trị, id+ valuevà đôi khi type) mà giữ thuộc tính cho "đối tượng", như tươi / thối, màu đỏ / xanh / xanh cho các sản phẩm.

Tôi không đặt các thuộc tính này vào bảng sản phẩm vì các thành phần điện tử không thể mới và khí oxy không thể có màu đỏ và các bảng không thể có số lượng hàng không giới hạn ...

Để lưu trữ các thuộc tính, tôi sử dụng các bảng nhỏ tùy chỉnh trong đó 2-3 trường: idđể liên kết, nameđể hiển thị trong ứng dụng và đôi khi typenếu các nhóm thuộc tính trong cùng thể loại.

Các "đối tượng" chính được liên kết với các thuộc tính thông qua các bảng nhiều-nhiều trung gian.

Có bất kỳ lý do để tạo và duy trì các chỉ mục cho những "từ điển nhỏ" đó với ít hơn 1000 mục (thường là 10-40) không?

Cơ sở dữ liệu mục tiêu của tôi là Oracle nhưng tôi hy vọng rằng nhà cung cấp trả lời độc lập ...

Tôi điền - không, nhưng không có kỹ năng kỹ thuật để biện minh cho việc điền của tôi ...

Câu trả lời:


14

Nói chung là có. Khi thiếu chỉ mục, mẫu truy cập phải kiểm tra từng hàng, chỉ để xem đó có phải là mẫu bạn cần hay không. Vấn đề không phải là kích thước bảng, mà là sự tương tranh. Tùy thuộc vào mức độ cô lập của bạn, các lần quét của bạn có thể chặn đằng sau giao dịch không được cam kết chỉ để chờ các hàng cuối cùng là 'không thú vị' được mở khóa. Vì quá trình quét của bạn được đảm bảo 'nhìn' ở mọi hàng, mọi lần quét sẽ chặn đằng sau bất kỳ ghi nào (chèn, xóa hoặc cập nhật). Oracle mặc định cách ly ảnh chụp nhanh, điều này vẫn ổn trong tình huống này (không chặn) nhưng các nhà cung cấp khác mặc định cho một thứ khác, ví dụ. SQL Server sẽ mặc định đọc cam kết mà làm khối.

Với một chỉ mục hiện diện, mẫu truy cập của bạn sẽ chỉ nhìn vào các hàng có liên quan (trong phạm vi khóa mong muốn), vì vậy cơ hội thống kê thuần túy về xung đột khóa sẽ giảm đáng kể.


Cảm ơn đã giải thích, tôi có một câu hỏi tiếp theo (mặc dù bây giờ là 3 năm sau). Còn những bàn rất nhỏ với tối đa 3 hoặc 4 hàng thì sao?
Cướp

Xác nhận các bảng nhỏ (phù hợp trong 1-2 trang) rất có thể sẽ được quét
Remus Rusanu

@Remus cần thiết để tạo Chỉ mục trên MySQL
Singh Kailash
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.