SQL Server - Al poner un Select Top la query se eterniza

 
Vista:

Al poner un Select Top la query se eterniza

Publicado por Miguel (5 intervenciones) el 12/05/2020 10:02:10
Hola a todos.
Estoy haciendo un select top 100 from vista y tarda una barbaridad, cuando si hago un select * from vista tarda sólo unos segundos. Esto hace, además, que cuando Excel quiere mostrar una vista previa se muera en el intento...
¿Alguien sabe por qué puede ser?
Muchas 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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Al poner un Select Top la query se eterniza

Publicado por Isaias (4558 intervenciones) el 12/05/2020 16:35:01
Hablas de EXCEL, ¿que motor de base de datos estas trabajando?, Estas en un foro de SQL Server
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

Al poner un Select Top la query se eterniza

Publicado por Miguel (5 intervenciones) el 19/05/2020 08:13:38
Isaias, estoy hablando de SQL Server 2012. Si hago un Top X tarda el doble de si hago un select *. La vista no devuelve más de 200000 registros.
Comentaba que al conectarse desde Excel a esa vista de la BBDD en concreto, intenta mostrar una vista previa de los datos (entiendo que internamente hace un top x y no es capaz de mostrarte los 20 primeros registros).
Muchas gracias.
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
Imágen de perfil de Plutarco Pérez
Val: 122
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Al poner un Select Top la query se eterniza

Publicado por Plutarco Pérez (46 intervenciones) el 19/05/2020 22:25:31
Que tal Miguel buenas tardes

Recuerda que siempre en una instrucción SELECT TOP debes usar un ORDER BY

Lo que hago cuando creo una vista que voy a usar en excel, obviamente al guardarla no te permite hacer un ORDER BY, pero lo que hago es crear el índice que voy a necesitar para que el motor de base de datos de sql lo use a conveniencia.

Ojalá te sirva a ti también.

Saludos
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Al poner un Select Top la query se eterniza

Publicado por Isaias (4558 intervenciones) el 20/05/2020 17:01:41
Aparte de lo que recomienda Plutarco, agrega la instruccion PERCENT, veamos que resultados te da SELECT TOP (100) PERCENT....
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
Imágen de perfil de Vega
Val: 102
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Al poner un Select Top la query se eterniza

Publicado por Vega (43 intervenciones) el 23/05/2020 13:09:50
Hola Miguel.
El motivo tiene mucho que ver con la información en cache que tiene el motor de SQL.

Lo que suele suceder generalmente en tu caso con SQL server es lo siguiente;
1. en le caso de un "select *" de una vista o tabla, es muy probable que está esté en caché y el resultado de la consulta se devolverá de una manera eficaz.
2 en el caso de un "select top" el motor tiene que ordenar los resultados para devolverte los 100 resultas que has pedido y estará usando un operador Sort en el plan de ejecución. Algo que tardará una eternidad en comparación si te faltan índices.

Saludos
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