Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/08/2011, 10:24
pedamarcos
 
Fecha de Ingreso: mayo-2009
Mensajes: 114
Antigüedad: 15 años
Puntos: 1
Respuesta: Consulta lenta - ¿índices?

Cita:
Iniciado por Libras Ver Mensaje
ya probaste poniendo un nonclustered index en el campo fecha hora? porque estas haciendo un order by por un campo que no tienes indexado y esto te consume tiempo
Se me olvidó mencionar que la tabla Tabla tiene una clave principal PK_Tabla del tipo:
PK_Tabla clustered, unique, primary key located on PRIMARY FechaHora, Campo1
Por tanto, creo que puedo hacer un Order By FechaHora, que no debe ir lento, al formar parte de la clave principal, ¿o sí? Si no te he entendido mal, me recomiendas que genere un índice non clustered sólo con la FechaHora, por el tema del Order By.

Cita:
Iniciado por Libras Ver Mensaje
del noncluster que mencionas creo que lo hace porque estas tratando de obtener valores que hacen referencia a esos 3 campos
En la sentencia SQL sólo se hace referencia a Campo1, Campo2 y FechaHora, cómo no sea que te refieres al * para recoger todos los campos.

Cita:
Iniciado por Libras Ver Mensaje
porque un select *? si sabes que un indice funciona mejor cuando metes al from y al where los campos que estan indexados??
Tienes toda la razón. Pero cuál es mi sorpresa cuando ejecuto la misma sentencia pero seleccionando campos en el Select y tarda igual o más que con el Select *:
SELECT TOP 1 Campo2 FROM Tabla WHERE Campo1 = 1049 AND FechaHora < '05/08/2011' AND Campo2 > 0 ORDER BY FechaHora DESC

Yo sigo pensando que el índice PK_Campo1 no se está aplicando para ciertos valores, ¿es posible lo que digo?
¿Cómo es posible recalcular un índice de una tabla en SQL Server Express?

Gracias de nuevo.