2013-10-14 14 views
14

Có một số cột mà tôi muốn tạo chỉ mục để cải thiện tốc độ tìm kiếm và sắp xếp. Nếu cột được đánh dấu là UNIQUE, ví dụ:Có một ràng buộc UNIQUE loại bỏ sự cần thiết cho một chỉ mục rõ ràng trong Sqlite?

CREATE TABLE "foo" (
    "bar" TEXT NOT NULL UNIQUE 
) 

là cột "thanh" bây giờ được lập chỉ mục theo cách như vậy rằng đây:

CREATE INDEX foo_bar ON foo(bar) 

sẽ không cung cấp tiền thưởng tốc độ cho các tìm kiếm và loại?

Trả lời

12

UNIQUEPRIMARY KEY ràng buộc thực sự tạo chỉ mục nội bộ để tăng tốc độ tra cứu của họ, vì vậy bạn không cần phải tạo riêng của mình.
(xem documentation)

+0

Lưu ý về "phí quan trọng" không còn khả dụng trên trang SQLite nữa. Có lẽ điều này có nghĩa rằng điều này không còn là trường hợp và bạn có thể tạo ra một chỉ mục rõ ràng mà không cần bất kỳ chi phí nào. –

+0

@riot_starter Vâng, chi phí chưa bao giờ lớn hơn chỉ số rõ ràng –

+0

Nếu đó là chi phí, tôi nghĩ rằng nó là không đáng kể, so với thực tế là bạn có thể có tên chỉ mục có ý nghĩa hơn trong EXPLAIN QUERY PLAN, hơn khi sử dụng cái bên trong (với điều kiện là SQLite sẽ không tạo ra một chỉ số nội bộ dư thừa) .. –

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