2010-07-21 38 views
14

Tôi không hiểu chỉ mục là gì hoặc thực hiện trong SQLite. (NOT SQL) Tôi nghĩ rằng nó cho phép phân loại theo thứ tự tăng dần và giảm dần và truy cập dữ liệu nhanh hơn. Nhưng tôi đoán ở đây.Chỉ số trong SQLite là gì?

+0

Có một hướng dẫn SQLite tuyệt vời với các bản vẽ giải thích [cách các loại chỉ số khác nhau sẽ tăng tốc truy vấn] (https://www.sqlite.org/queryplanner.html). –

Trả lời

15

Tại sao không phải SQL? Câu trả lời là như nhau, mặc dù các chi tiết bên trong sẽ khác nhau giữa các lần triển khai.

Đặt một chỉ mục trên một cột báo cho bộ máy cơ sở dữ liệu xây dựng, không ngạc nhiên, một chỉ mục cho phép nó định vị nhanh các hàng khi bạn tìm kiếm các giá trị nhất định trong cột mà không phải quét từng hàng trong bảng.

Chỉ mục đơn giản (và có thể dưới tối ưu) có thể được tạo bằng cây tìm kiếm nhị phân thông thường.

3

Một chỉ số (trong bất kỳ cơ sở dữ liệu) là một danh sách của một số loại mà liên kết một danh sách sắp xếp (hoặc ít nhất, nhanh chóng tìm kiếm) của các phím với các thông tin về nơi để tìm phần còn lại của dữ liệu được liên kết với khóa.

Bạn có thể không tìm thấy thông tin về điều này trên Internet vì bạn cho rằng đó là khái niệm SQLite, nhưng không phải - đó là khái niệm kỹ thuật máy tính nói chung.

3

Suy nghĩ về sổ địa chỉ. Nếu bạn đang tìm kiếm số điện thoại của Rossi Mario, bạn biết rằng họ được sắp xếp theo thứ tự bảng chữ cái để bạn có thể đi đến thư R, sau đó tìm kiếm thư o và cứ tiếp tục như vậy. Chỉ số cũng làm như vậy, là một tập hợp các tham chiếu đến các mục giúp tăng tốc một số thao tác.

Tìm kiếm trong sổ địa chỉ không theo thứ tự sẽ chậm hơn nhiều, bạn nên bắt đầu từ tên đầu tiên trên trang đầu tiên và tìm kiếm trong tất cả các trang cho đến khi bạn tìm thấy tên mình đang tìm kiếm.

2

Tôi nghĩ rằng nó cho phép sắp xếp theo thứ tự tăng dần và giảm dần và truy cập vào dữ liệu nhanh hơn.

Vâng, đó là những gì nó dành cho. Các chỉ mục tạo ra sự trừu tượng của việc sắp xếp dữ liệu, giúp tăng tốc độ tìm kiếm một cách đáng kể. Với chỉ mục sử dụng cây tìm kiếm nhị phân cân bằng, các tìm kiếm lấy O (log N) thay vì thời gian O (N).

Các câu trả lời khác chưa đề cập đến là hầu hết các cơ sở dữ liệu đều sử dụng các chỉ mục để thực hiện các ràng buộc UNIQUE (và do đó cũng là PRIMARY KEY). Bởi vì để đảm bảo tính duy nhất, bạn phải có khả năng phát hiện xem khóa đã có ở đó chưa và điều này có nghĩa là bạn muốn tìm kiếm nhanh.

Xem qua cơ sở dữ liệu SQLite của bạn. Các chỉ số sqlite_autoindex_ này được tạo ra để thực thi các ràng buộc UNIQUE.

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