Helpex - Trao đổi & giúp đỡ Đăng nhập

Nhược điểm của việc có nhiều chỉ số là gì?

Phan Ngọc Trinh
· 21:08 18/04/2009
12 giờ trước

Gần đây tôi đã tăng tốc một truy vấn phức tạp theo thứ tự độ lớn bằng cách cung cấp cho SQLite một chỉ mục tốt để làm việc. Kết quả như thế này khiến tôi tự hỏi liệu tôi có nên lập chỉ mục cho rất nhiều trường khác thường được sử dụng cho các mệnh đề JOIN hoặc ORDER BY hay không. Nhưng tôi không muốn trở nên quá cuồng nhiệt và nó phản tác dụng: Tôi cho rằng phải có một số lý do để không tạo chỉ mục, hoặc mọi trường sẽ được lập chỉ mục theo mặc định.

Tôi đang sử dụng SQLite trong trường hợp này, nhưng tất nhiên lời khuyên về DBMS-bất khả tri cũng được hoan nghênh.

17 hữu ích 0 bình luận 18k xem chia sẻ
Dương Cao Tiến
· 21:10 18/04/2009
21:10:30 18/04/2009

Các chỉ mục làm chậm quá trình chèn và cập nhật (có thể trở thành một vấn đề thực sự nghiêm trọng với việc khóa) và tốn dung lượng đĩa. Nó khá là nhiều.

41 hữu ích 2 bình luận chia sẻ
Trịnh Gia Bảo
· 21:12 18/04/2009
21:12:01 18/04/2009

Các chỉ mục sử dụng hết dung lượng đĩa để lưu trữ và mất thời gian để tạo và duy trì. Những cái không sử dụng không mang lại bất kỳ lợi ích nào. Nếu có nhiều chỉ mục ứng viên cho một truy vấn, truy vấn có thể bị chậm lại do máy chủ chọn "sai" cho truy vấn.

Sử dụng những yếu tố đó để quyết định xem bạn có cần một chỉ mục hay không.

Thông thường có thể tạo các chỉ mục sẽ KHÔNG BAO GIỜ được sử dụng - ví dụ, và chỉ mục trên một trường (không phải null) chỉ có hai giá trị có thể, gần như chắc chắn sẽ vô dụng.

Bạn cần giải thích các truy vấn của ứng dụng của mình để đảm bảo rằng các truy vấn thường xuyên được thực hiện đang sử dụng các chỉ mục hợp lý nếu có thể và không tạo nhiều chỉ mục hơn mức cần thiết để thực hiện điều đó.

6 hữu ích 1 bình luận chia sẻ
Trịnh Diệu Thiện
· 16:49 19/04/2009
16:49:21 19/04/2009

Để kiểm tra ứng dụng cụ thể của mình, bạn có thể đặt "KẾ HOẠCH GIẢI THÍCH" trước bất kỳ truy vấn nào bạn chạy và kiểm tra kết quả. Nó sẽ cho bạn biết nó đang ở đâu hoặc không sử dụng các chỉ mục.

Bằng cách đó, bạn có thể xác định nơi bạn có thể sử dụng nhiều chỉ mục hơn và nơi nào chúng sẽ không tạo ra sự khác biệt.

Sqlite Giải thích

Tôi sử dụng SqliteSpy để kiểm tra thủ công của truy vấn dường như đang gây ra sự cố.

6 hữu ích 0 bình luận chia sẻ
Lê Công Tuấn
· 02:46 19/04/2009
02:46:22 19/04/2009

Chi phí của một chỉ mục trong không gian đĩa nói chung là nhỏ. Chi phí ghi bổ sung để cập nhật chỉ mục khi bảng thay đổi thường ở mức vừa phải. Chi phí cho việc khóa bổ sung có thể rất nghiêm trọng.

Nó phụ thuộc vào tỷ lệ đọc và ghi trên bảng và tần suất chỉ mục thực sự được sử dụng để tăng tốc truy vấn.

5 hữu ích 3 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql database sqlite indexing rdbms-agnostic , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm