SQL Server - subconsulta lenta

 
Vista:

subconsulta lenta

Publicado por Ema (1 intervención) el 29/12/2020 21:30:04
Buenas tardes, tengo una duda sobre como debería ser la mejor manera de hacer una subconsulta, necesito obtener un Id del mayor de dos campos para obtener el idCertificacion mayor (este id no es numérico), yo lo tengo con una subconsulta y el id que traiga de esa lo relaciono en la primera consulta, así:

1
2
3
4
5
6
7
8
9
10
11
select idEstudiante, nombreEstudiante, idCertificacion
 
from estudiante inner join certificacion on estudiante.idEstudiante= certificacion.idEstudiante
 
inner join ( select idCertificacion, Max(fechanicio), Max(fechaFin) from
 
estudiante inner join certificacion on estudiante.idEstudiante= certificacion.idEstudiante
 
group by idCertificacion
 
) as datos  ON datos.idCertificacion = certificacion.idCertificacion

Pero me gustaría si hay alguna forma de mejorarlo ya que entre más registros se pone más lenta la consulta

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 25
Ha aumentado su posición en 4 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

subconsulta lenta

Publicado por Jorge (17 intervenciones) el 30/12/2020 00:55:03
Una búsqueda por fechas es efectuar búsquedas sobre un varchar; las búsquedas que se realicen sobre columnas de tipo string o varchar siempre serán más lentas que hacerlas sobre campos estrictamente numéricos.

Que recomiendo yo.

Crear columnas paralelas de tipo numérico, donde almacenarás las fechas sin los separadores, es decir tu tendrás una columna de tipo date donde almacenas la fecha en el formato normal de tipo fecha, pero adicionalmente tendrás una columna donde almacenes la fecha solo numérica, y haces las búsquedas por esta columna, esto es 10 veces más rápido que hacerlo sobre un varchar, y es válido para cualquier motor, en Oracle la diferencia salta a la vista.

Tu tendrás en tu BD dos columnas con fechas en columna tipo date será: 29/12/2020

Y la tendrás también numérica así: 29122020 (Siempre harás la búsqueda por esta)

El tiempo de respuesta te debe mejorar muchísimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar