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 NSPredicate
và NSSortDescriptor
trong truy vấn của mình.
Giả sử bạn có hai thực thể: PBOUser
và PBOLocation
(nhiều người). Bạn có thấy tính chất của nó ở hình dưới đây:
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:
hay:
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:
Đây là cách bạn có thể tối ưu hóa cơ sở dữ liệu của bạn :-)
Nguồn
2015-04-03 13:19:16
-1 vì không cung cấp ví dụ sử dụng. –
Có, bạn nên cung cấp một mẫu để làm rõ câu hỏi này. – faviomob
vui lòng cung cấp mẫu –