2011-12-19 7 views
20

En Xcode puede agregar "Índices" para una entidad en el inspector del modelo de datos.Qué son los índices en el inspector del modelo de datos Xcode Core-Data

Xcode sidebar showing the Indexes view

Para la captura de pantalla que le pegué "añadir" dos veces para "coma, separadas, las propiedades" es el valor predeterminado.

¿Qué son exactamente esos índices?
¿Tienen algo que ver con los atributos indexados? Y si tienen, ¿cuál es la diferencia entre especificar los índices en este inspector y seleccionar "indexado" para el atributo individual?

Respuesta

6

Use la lista de Índices para agregar índices compuestos a la entidad. Un índice compuesto es un índice que abarca múltiples atributos o relaciones. Un índice compuesto puede hacer que la búsqueda sea más rápida. Los nombres de atributos y relaciones en su modelo de datos son los índices más comunes. Debe usar la tienda SQLite para usar índices compuestos.

+3

-1 por no proporcionar ejemplos de uso. –

+1

Sí, debe proporcionar una muestra para aclarar esta pregunta. – faviomob

+0

por favor, proporcione una muestra –

14

Optimizing Core Data searches and sorts

Como dice el título, la indexación es velocidad de búsqueda y ordenación su base de datos. Sin embargo, ralentiza los cambios de guardado en la tienda persistente. Es importante cuando usa objetos NSPredicate y NSSortDescriptor dentro de su consulta.

Digamos que tiene dos entidades: PBOUser y PBOLocation(muchas en muchas). Se puede ver sus propiedades en la imagen de abajo:

enter image description here

Supongamos que la base de datos hay 10.000 usuarios y 50.000 ubicaciones. Ahora tenemos que encontrar a todos los usuarios con correo electrónico comenzando en a. Si proporcionamos dicha consulta sin indexación, Core Data debe verificar cada registro (básicamente 10,000).

Pero lo que si está indexado (en otras palabras, ordenados por correo electrónico descendente)? -> Luego Core Data verifica solo aquellos registros iniciados con a. Si Core Data llega al b, dejará de buscar porque es obvio que no hay más registros cuyo correo electrónico comience con a ya que está indexado.

Cómo habilitar la indexación en un modelo de datos básicos desde dentro de Xcode:

enter image description here
o:
enter image description here

Esperemos que son equivalentes :-)

Pero lo que si que quería: los correos electrónicos comenzaron con a y el nombre comienza con b Usted puede hacer esta comprobación indexado para name propiedad de PBOUser entidad, o:

enter image description here

Así es como se puede optimizar su base de datos :-)

4

Adición de una fila con un solo atributo a la Indexes lista es equivalente a seleccionar Indexed para ese atributo: crea un índice para el atributo para acelerar las búsquedas en las declaraciones de consulta.

La lista Indexes está pensada para índices compuestos. Los índices compuestos son útiles cuando se sabe que será la búsqueda de valores de estos atributos combinados en el WHERE cláusula de una consulta:

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

Esta declaración podría hacer uso de un índice compuesto surname, firstname. Ese índice también sería útil si solo busca surname, pero no si solo busca firstname. Piense en el índice como si fuera una guía telefónica: primero se ordena por apellido y luego por nombre. Entonces, el orden de los atributos es importante.

Cuestiones relacionadas