subconsultas - subquery sql server ejemplos
Subconsulta v/s uniĆ³n interna en servidor sql (5)
En Sql Server Management Studio puede habilitar " Estadísticas del cliente " y también incluir el plan de ejecución real . Esto le dará la posibilidad de conocer con precisión el tiempo de ejecución y la carga de cada solicitud.
También entre cada solicitud, limpie el caché para evitar el efecto secundario del caché en el rendimiento
USE <YOURDATABASENAME>;
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
¡Creo que siempre es mejor ver con nuestros propios ojos que confiar en la teoría!
Tengo las siguientes consultas
Primero uno usando la unión interna
SELECT item_ID,item_Code,item_Name
FROM [Pharmacy].[tblitemHdr] I
INNER JOIN EMR.tblFavourites F ON I.item_ID=F.itemID
WHERE F.doctorID = @doctorId AND F.favType = ''I''
segundo utilizando sub consulta como
SELECT item_ID,item_Code,item_Name from [Pharmacy].[tblitemHdr]
WHERE item_ID IN
(SELECT itemID FROM EMR.tblFavourites
WHERE doctorID = @doctorId AND favType = ''I''
)
En esta tabla de elementos [Pharmacy].[tblitemHdr]
Contiene 15 columnas y 2000 registros. Y [Pharmacy].[tblitemHdr]
contiene 5 columnas y alrededor de 100 registros. En este escenario, ¿ which query gives me better performance?
La primera consulta es mejor que la segunda consulta ... porque la primera consulta nos une a ambas tablas. y también verifique el plan de explicación para ambas consultas ...
Por lo general, las combinaciones funcionarán más rápido que las consultas internas, pero en realidad dependerá del plan de ejecución generado por SQL Server. No importa cómo escriba su consulta, SQL Server siempre la transformará en un plan de ejecución. Si es lo suficientemente "inteligente" para generar el mismo plan desde ambas consultas, obtendrá el mismo resultado.
Sub-consulta Vs Join
Tabla uno 20 filas, 2 cols.
Tabla dos 20 filas, 2 cols.
sub-consulta 20 * 20
unirse 20 * 2
lógico, rectificar
Detallado
El conteo de escaneo indica el efecto de multiplicación ya que el sistema tendrá que pasar una y otra vez para obtener datos, para su medida de rendimiento, solo mire la hora
unirse es más rápido que la subconsulta.
la subconsulta hace que el acceso al disco esté ocupado, piense en la aguja de lectura-escritura (¿cabeza?) del disco duro que va y viene cuando accede: Usuario, SearchExpression, PageSize, DrilldownPageSize, User, SearchExpression, PageSize, DrilldownPageSize, User ... en.
Unir funciona concentrando la operación en el resultado de las dos primeras tablas, cualquier unión subsiguiente concentrará la unión en el resultado en memoria (o en caché en el disco) de las primeras tablas unidas, y así sucesivamente. menos movimiento de lectura-escritura de la aguja, por lo tanto más rápido
Fuente: Here