2011-12-19 36 views
20

Trong Xcode, bạn có thể thêm "Chỉ mục" cho một thực thể trong thanh tra mô hình dữ liệu.Các chỉ mục trong thanh tra mô hình dữ liệu lõi-dữ liệu Xcode

Xcode sidebar showing the Indexes view

Đối với ảnh chụp màn hình tôi đã nhấn "thêm" hai lần như vậy "dấu phẩy, tách ra, tính chất" chỉ là giá trị mặc định.

Chính xác những chỉ mục đó là gì?
Họ có liên quan gì đến các thuộc tính được lập chỉ mục không? Và nếu họ có sự khác biệt giữa việc chỉ định các chỉ mục trong thanh tra này và chọn "Được lập chỉ mục" cho thuộc tính cá nhân là gì?

Trả lời

6

Sử dụng danh sách Chỉ mục để thêm chỉ mục phức hợp vào thực thể. Một chỉ số phức hợp là một chỉ mục mở rộng nhiều thuộc tính hoặc các mối quan hệ. Một chỉ số hợp chất có thể giúp tìm kiếm nhanh hơn. Tên của các thuộc tính và mối quan hệ trong mô hình dữ liệu của bạn là các chỉ mục phổ biến nhất. Bạn phải sử dụng kho lưu trữ SQLite để sử dụng các chỉ mục ghép.

+3

-1 vì không cung cấp ví dụ sử dụng. –

+1

Có, bạn nên cung cấp một mẫu để làm rõ câu hỏi này. – faviomob

+0

vui lòng cung cấp mẫu –

14

Optimizing Core Data searches and sorts

Như tiêu đề nói, lập chỉ mục là để tốc độ lên tìm kiếm và sắp xếp cơ sở dữ liệu của bạn. Tuy nhiên nó làm chậm các thay đổi tiết kiệm để lưu trữ lâu dài. Điều quan trọng là khi bạn đang sử dụng các đối tượng NSPredicateNSSortDescriptor trong truy vấn của mình.

Giả sử bạn có hai thực thể: PBOUserPBOLocation(nhiều người). Bạn có thấy tính chất của nó ở hình dưới đây:

enter image description here

Giả sử rằng trong cơ sở dữ liệu có 10.000 người dùng, và 50.000 địa điểm. Bây giờ, chúng tôi cần tìm mọi người dùng có email bắt đầu từ a. Nếu chúng tôi cung cấp truy vấn như vậy mà không lập chỉ mục, Dữ liệu cốt lõi phải kiểm tra mỗi bản ghi (về cơ bản là 10.000).

Nhưng điều gì sẽ xảy ra nếu nó được lập chỉ mục (nói cách khác được sắp xếp theo email giảm dần)? -> Sau đó, Dữ liệu lõi chỉ kiểm tra những bản ghi bắt đầu bằng a. Nếu dữ liệu cốt lõi đạt đến b thì nó sẽ ngừng tìm kiếm vì rõ ràng là không có hồ sơ nào khác có email bắt đầu bằng a kể từ khi được lập chỉ mục.

Làm thế nào để kích hoạt tính năng lập chỉ mục trên một mô hình Core Data từ bên trong Xcode:

enter image description here
hay:
enter image description here

Hy vọng rằng họ là tương đương :-)

Nhưng nếu bạn muốn: Email bắt đầu bằng a và tên bắt đầu bằng b Bạn có thể làm điều này việc kiểm tra INDEXED cho name tài sản cho PBOUser tổ chức nào, hay:

enter image description here

Đây là cách bạn có thể tối ưu hóa cơ sở dữ liệu của bạn :-)

4

Thêm một hàng với một thuộc tính đơn đến Indexes danh sách tương đương với việc chọn Indexed cho thuộc tính đó: Nó tạo một chỉ mục cho thuộc tính để tăng tốc các tìm kiếm trong câu lệnh truy vấn.

Danh sách Indexes có nghĩa là cho chỉ mục phức hợp. chỉ số hợp chất có ích khi bạn biết rằng bạn sẽ tìm kiếm giá trị của các thuộc tính kết hợp trong WHERE khoản của một truy vấn:

SELECT * FROM customer WHERE surname = "Doe" AND firstname = "Joe"; 

tuyên bố Điều này có thể làm cho việc sử dụng một chỉ số hợp chất surname, firstname. Chỉ mục đó cũng sẽ hữu ích nếu bạn chỉ tìm kiếm surname, nhưng không phải nếu bạn chỉ tìm kiếm firstname. Hãy suy nghĩ về chỉ mục như thể nó là một cuốn sách điện thoại: Nó được sắp xếp theo họ đầu tiên, sau đó bằng tên đầu tiên. Vì vậy, thứ tự của các thuộc tính là quan trọng.

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