Estoy compilando mi aplicación con Entity Framework (primer principio del modelo). También estoy usando MS SQL Server 2008 para almacenar todos los datos de mi aplicación.La forma correcta de administrar índices de base de datos con Entity Framework
Después de algún tiempo de desarrollar Tengo el siguiente código:
public partial class EventInfo
{
#region Primitive Properties
public virtual int Id
{
get;
set;
}
public virtual string EventName
{
get;
set;
}
public virtual string EventKey
{
get;
set;
}
public virtual System.DateTime DateStamp
{
get;
set;
}
#endregion
}
y Visual diseñador de la base de datos del estudio han creado trozo especial de código SQL para mapear esta entidad a la base de datos:
-- Creating table 'EventInfoSet'
CREATE TABLE [dbo].[EventInfoSet] (
[Id] int IDENTITY(1,1) NOT NULL,
[EventName] nvarchar(max) NOT NULL,
[EventKey] nchar(32) NOT NULL,
[DateStamp] datetime NOT NULL
);
Y por supuesto, un índice para la propiedad Id.
-- Creating primary key on [Id] in table 'EventInfoSet'
ALTER TABLE [dbo].[EventInfoSet]
ADD CONSTRAINT [PK_EventInfoSet]
PRIMARY KEY CLUSTERED ([Id] ASC);
El EventKey es una cadena, y en realidad lo uso para almacenar md5 hash (en representación de cadenas). Pero la cosa es que mi código principal se parece a:
int cnt = context.EventInfoSet.Where(e => e.EventKey == eventKey).Count();
y
int cnt = context.EventInfoSet.Where(e => e.EventKey == eventKey && e.DateStamp >= dateFrom && e.DateStamp < dateTo).Count();
eventKey que aquí hay una variable de cadena. Como puede ver, a menudo trato con la propiedad de EventKey. Pero mi tabla podría contener una gran cantidad de registros (hasta 5 millones). Y necesito este código para trabajar lo más rápido posible. No encontré ninguna opción para marcar EventKey como propiedad de índice en el diseñador. Y quiero saber:
- ¿cómo puedo hacer las cosas más rápido? do Tengo que preocuparme por eso con mi código?
- ¿Hay alguna manera gentil para forzar .NET desarrollo entorno generar campo de índice automáticamente?
- si no hay manera suave, y tengo que actualizarlo manualmente, ¿cómo puedo organizar cosas mejor hacerlo automáticamente?
- puede ser que me dé un enlace al artículo que explica todas estas cosas con índices, porque mi conocimiento carece de aquí.
¡Gracias!
Consulte estas otras [preguntas sobre SO en el modelo EF primero] (http://stackoverflow.com/questions/3333674/entity-framework-4-add-index-in-model-first-design) para obtener algunas ideas –
5M no está cerca de ser enorme, por cierto. –