2010-08-05 4 views
5

Disculpas por lo que bien podría ser una pregunta estúpida.¿La indexación de una tabla SQL mejorará el rendimiento de una instrucción LINQ?

Estoy intrigado por (a) la indexación mejorará el rendimiento (b) ¿cómo mejorará el rendimiento y (c) por qué mejorará el rendimiento?

Además, si esto mejora el rendimiento, sería este es el caso en todos los ámbitos de LINQ a SQL, LINQ a Entidades, LINQ a objetos, etc, etc.

Una vez más, si esto es una pregunta realmente estúpida , Pido disculpas.

Respuesta

4

Mejorará el rendimiento si, y solo si, su consulta LINQ hace que se ejecute una instrucción SQL que puede hacer uso del índice, ya que, al usar Linq-To-Sql, su consulta LINQ se traduce en una Declaración SQL (de ahí el nombre).

Por ejemplo, la siguiente consulta obviamente se beneficiaría de un índice en la columna Apellido de la tabla Clientes.

var results = from c in db.Customers 
    where c.LastName == 'Smith' 
    select c; 
+0

Así que LINQ to Entities ... ¿hay poca mejora en el rendimiento? –

+0

Si su tienda de respaldo es una base de datos, entonces sí, la indexación puede ayudar a mejorar el rendimiento. –

+0

Excelente - gracias Winston. –

0

Podría mejorar el rendimiento si indicas correctamente. LINQ solo genera una declaración de SQL detrás de las escenas ... si la declaración hace uso de su índice, entonces mejorará el rendimiento ... si no lo hace, no lo hará.

1

Como todo SQL, depende.

Si tiene una mesa pequeña no importa (el valor actual para "pequeño" es < 3000 filas).

Si su consulta va a devolver más del 30% de las filas en una tabla, entonces será más rápido sin un índice.

Sin embargo, si desea seleccionar una o dos filas particulares de una tabla grande, entonces indexar algunas de las columnas que utiliza en la instrucción where (los argumentos de búsqueda que pasa a LINQ) acelerarán considerablemente la creación.

También si se unen frequntly tablas que los predicados de combinación (las columnas utilizadas en la instrucción "ON" para el unido a la tabla) deben indexarse. Esto puede reducir el tiempo de respuesta en algunas consultas de horas a segundos.

0

LINQ to SQL genera una instrucción SQL, puede ver esta declaración en diferentes utilidades como Linq pad. Cuando la consulta se ejecutará en SQL Server, los índices definitivamente mejorarán el rendimiento.

  • indexará mejorar performanc - Sí.
  • cómo mejorará el rendimiento - Lea acerca de los índices.
  • ¿por qué mejorará el rendimiento?- I realmente no tengo la respuesta de esta pregunta .

Además, si esto no mejora el rendimiento , sería este el caso en todos los ámbitos de LINQ a SQL, LINQ a Entidades , LINQ a objetos, etc, etc

Respuesta de esto es ¿cuál es la relación de la tabla SQL con un objeto?

Cuestiones relacionadas