SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
INSTITUTO TECNOLOGICO DE OCOTLAN.
ING. SISTEMAS COMPUTACIONALES
BASE DE DATOS
SUGERENCIAS PARA LAS CONSULTAS EN SQL
UNIDAD 2.
SUGERENCIAS PARA CONSULTAS EN SQL.
1. Uso de cursores
Si la consulta utiliza cursores, determina antes si es posible escribirla con un tipo de cursor
más eficaz (uno de avance rápido) o con una única consulta. Las consultas
únicas mejoran las operaciones de cursor.
Dado que un conjunto de instrucciones de cursor suele constituir una operación de bucle
externo, en la que cada fila se procesa una vez con una instrucción interna, puedes
contemplar la posibilidad de usar en su lugar una instrucción GROUP BY o CASE. Quizá
incluso una subconsulta.
2. Uso de alias
Utilizar varios alias para una sola tabla en la misma consulta para simular la intersección de
índices ya no es necesario. SQL Server tiene en cuenta automáticamente la intersección
de índices y puede utilizar varios en la misma tabla.
3. Uso de la parametrización
Utiliza la parametrización de consultas para permitir la reutilización de los planes de
ejecución de consulta almacenados en la memoria caché. Si un conjunto de consultas
comparte el mismo hash de consulta y hash de plan de consulta podrías mejorar el
rendimiento creando una consulta parametrizada.
Además, si llamas a una consulta con parámetros, en lugar de a varias consultas con
valores literales, podrás reutilizar el plan de ejecución de consulta almacenado en la
memoria caché.
4. Uso de Exists
Cuando queramos hacer una sub-consulta en una base de datos utilizando la sentencia
NOT IN, analicemos si podemos cambiar nuestro quieres con el uso de la sentencia Exists
que es mucho más eficiente que la anterior. O en todo caso, utilizar IN en vez de NOT IN,
ya que esto hace un escaneo completo en la tabla descartando opciones a omitir.
5. Uso de Distinct
Utilizar distinct para excluir datos duplicados es muy usado por los programadores para
evitar errores de diseño de base de datos y así esconder algunos duplicidad de
información, pero esto es un grave error. Es una de las sentencias que más necesita hacer
I/O en el disco y forzar bastante el procesador. Por tal motivo, si no es necesario evitemos
utilizarla.
6. Uso de Tops
Cuando se quiere traer un grupo de registros es mejor utilizar la sentencia Top y no
Rowcount, ya que esta última presenta inconvenientes con listas no ordenadas. En
cambio, si la lista es ordenada es más eficiente que la sentencia Top.
7. Uso de*.
Cuando se realizan consultas que van a devolver muchos campos es mejor definir todos
los campos que queremos devolver en nuestro quieres, ya que el uso de * o Al impide el
uso de índices de forma eficiente.
8. Verificar si existe un registro
Muchos programadores utilizan el count (*) para ver si un registro existe en la base de
datos, pero una forma más eficiente de hacerlo es con Exists. Cuando éste encuentra un
registro detiene la búsqueda del mismo.
9. Uso de ORDER BY
Usar ORDER BY en las QUERIES que se lancen sólo si es absolutamente indispensable. Es
decir, que si es posible realizar la ordenación en el lado del cliente siempre será mejor que
realizarla desde el lado del servidor SQL Server.
En caso de que sea absolutamente necesario realizar la ordenación en el lado del
servidor SQL Server deberemos atender a las siguientes recomendaciones:
1. Mantener el número de filas a ordenar al mínimo
2. Mantener el número de columnas a ordenar al mínimo
3. Mantener el ancho (tamaño físico) de las columnas a ordenar al mínimo
4. Ordenar columnas con datos numéricos (NO tipos de datos carácter)
10. No usar el comando GROUP BY
No usarlo al menos sin una función de agregación. La cláusula GROUP BY puede usarse
con o sin una función de agregación. Pero si queremos obtener un mejor rendimiento, no
usaremos la cláusula GROUP BY sin una función de agregación. Esto es porque produce el
mismo resultado usar DISTINCT y es más rápido.
Para acelerar el uso de la cláusula GROUP BY debemos seguir las siguientes
recomendaciones:
1. Mantener al mínimo el número de filas a devolver por la Query.
2. Mantener al mínimo el número de agrupaciones
3. No agrupar columnas redundantes
4. Cambiar un JOIN por una SUBQUERY cuando hay uno en la misma SELECT que tiene un
GROUP BY.
OTRAS RECOMENDACIONES SON.
Algunas consultas consumen más recursos que otras. Por ejemplo, las consultas que
devuelven grandes conjuntos de resultados y las que contienen cláusulas WHERE que no
son únicas siempre consumen muchos recursos. Ningún grado de inteligencia del
optimizador de consultas puede eliminar el costo de recursos de estas construcciones en
comparación con una consulta menos compleja. SQL Server utiliza un plan de acceso
óptimo, pero la optimización de consultas está limitada por lo que es posible.
Sin embargo, para mejorar el rendimiento de las consultas, puede:
 Agregar más memoria. Esta solución es especialmente útil si el servidor ejecuta
muchas consultas complejas y varias consultas se ejecutan lentamente.
 Utilizar más de un procesador. Varios procesadores permiten que el Motor de base
de datos use consultas en paralelo. Para obtener más información, vea Procesar
una consulta en paralelo.
 Vuelva a escribir la consulta. Considere lo siguiente:
o Si la consulta utiliza cursores, determine si se puede escribir la consulta de
cursor con un tipo de cursor más eficaz (como un curso de sólo avance
rápido) o con una única consulta. Las consultas únicas normalmente
mejoran las operaciones de cursor. Debido a que un conjunto de
instrucciones de cursor suele constituir una operación de bucle externo, en
la que cada fila del bucle externo se procesa una vez con una instrucción
interna, considere la posibilidad de utilizar en su lugar una instrucción
GROUP BY o CASE, o una subconsulta. Para obtener más información,
vea Tipos de cursores (motor de base de datos) y Aspectos básicos de las
consultas.
o Si una aplicación utiliza un bucle, considere la posibilidad de colocar el
bucle en la consulta. A menudo, una aplicación contendrá un bucle que,
a su vez, contendrá una consulta con parámetros que se ejecuta muchas
veces y será necesario realizar un viaje de ida y vuelta en la red entre el
equipo que ejecuta la aplicación y SQL Server. En su lugar, cree una sola
consulta más compleja con una tabla temporal. Sólo necesita un viaje de
ida y vuelta en la red, y el optimizador de consultas puede optimizar mejor
la consulta única. Para obtener más información, vea Procedimientos de
Transact-SQL y Variables de Transact-SQL.
o No utilice varios alias para una sola tabla en la misma consulta para simular
la intersección de índices. Ya no es necesario debido a que SQL Server
tiene en cuenta automáticamente la intersección de índices y puede
utilizar varios índices en la misma tabla de la misma consulta. Observe el
ejemplo de consulta:
o SELECT * FROM limiten
o WHERE partkey BETWEEN 17000 AND 17100 AND
o shipdate BETWEEN '1/1/1994' AND '1/31/1994'
SQL Server puede utilizar índices sobre las columnas partkey y shipdate, y
después realizar una coincidencia hash entre los dos subconjuntos para
obtener la intersección de ííndices.
o Utilice la parametrización de consultas para permitir la reutilización de los
planes de ejecución de consulta almacenados en la memoria caché. Si un
conjunto de consultas tiene el mismo hash de consulta y hash de plan de
consulta, podría mejorar el rendimiento creando una consulta
parametrizada. Llamar a una consulta con parámetros en lugar de a varias
consultas con valores literales permite reutilizar el plan de ejecución de
consulta almacenado en la memoria caché. Para obtener más
información, vea Buscar y optimizar consultas similares utilizando hash del
plan de consulta y de consulta y Almacenar en caché y volver a utilizar un
plan de ejecución.
Si no puede modificar la aplicación, puede utilizar las guías de plan de la
plantilla con parametrización forzada para lograr un resultado similar. Para
obtener más información, vea Especificar el comportamiento de
parametrización de consultas por medio de guías de plan.
o Utilice sugerencias de consultas sólo si es necesario. Las consultas que
utilizan sugerencias ejecutadas en versiones anteriores de SQL Server deben
probarse sin las sugerencias especificadas. Las sugerencias pueden impedir
que el optimizador de consultas seleccione un plan de ejecución mejor.
Para obtener más información, vea SELECT (Transact-SQL).
 Utilice query_plan_hash para capturar, almacenar y comparar los planes de
ejecución de consulta de las consultas a lo largo del tiempo. Por ejemplo, después
de cambiar la configuración del sistema, puede comparar los valores hash del
plan de consulta de las consultas esenciales con sus valores hash de plan de
consulta originales. Las diferencias en los valores pueden indicarle si el cambio de
la configuración del sistema produjo planes de ejecución de consulta actualizados
para las consultas importantes. También podría decidir detener la ejecución de
una consulta de larga duración si su hash de plan de consulta en
sys.dm_exec_requests difiere de su hash de plan de consulta de línea base, que se
sabe que tiene un buen rendimiento. Para obtener más información, vea Buscar y
optimizar consultas similares utilizando hash del plan de consulta y de consulta.
 Utilice la opción de configuración query governor (regulador de consultas). Puede
utilizar la opción de configuración query governor para impedir que se consuman
recursos del sistema al ejecutar consultas de larga duración. De forma
predeterminada, la opción se establece para permitir que se ejecuten todas las
consultas, sin importar su duración. Sin embargo, se puede establecer el regulador
de consultas en el número máximo de segundos que está permitido ejecutar todas
las consultas de todas las conexiones o sólo las consultas de una conexión
específica. Debido a que el regulador de consultas se basa en el costo estimado
de las consultas en lugar de en el tiempo real transcurrido, no tiene sobrecarga de
tiempo de ejecución. También detiene las consultas de larga duración antes de
que comiencen, en lugar de ejecutarlas hasta que se alcance el límite definido
previamente. Para obtener más información, vea query governor cost limit,
opción y SET QUERY_GOVERNOR_COST_LIMIT (Transact-SQL).
 Optimice la reutilización de los planes de consultas de la caché del plan. Motor de
base de datos almacena en memoria caché los planes de consultas para una
posible reutilización. Si un plan de consulta no se pone en la caché, nunca podrá
reutilizarse. En su lugar, los planes de consulta que no están en la caché deben
compilarse cada vez que se ejecutan, lo que produce un bajo rendimiento. Las
siguientes opciones de la instrucción Transact-SQL SET impiden que los planes de
consulta que están en la caché se reutilicen. Un lote de Transact-SQL que
contenga estas opciones SET activadas no puede compartir sus planes de consulta
con el mismo lote que se compiló cuando estas opciones SET estaban
desactivadas:
SET ANSI_NULL_DFLT_OFF SET ANSI_NULL_DFLT_ON
SET ANSI_NULLS SET ANSI_PADDING
SET ANSI_WARNINGS SET ARITHABORT
SET CONCAT_NULL_YIELDS_NULL SET DATEFIRST
SET DATEFORMAT SET FORCEPLAN
SET LANGUAGE SET NO_BROWSETABLE
SET NUMERIC_ROUNDABORT SET QUOTED_IDENTIFIER
SET TEXTSIZE

Más contenido relacionado

La actualidad más candente

Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Universidad Nacional de Piura
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosiluijo
 
Administración de memoria con listas enlazadas
Administración de memoria con listas enlazadasAdministración de memoria con listas enlazadas
Administración de memoria con listas enlazadas69johan69
 
Lo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverLo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverEnrique Catala Bañuls
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Alexander Calderón
 
Recuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleRecuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleCarmen Soler
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gCarmen Soler
 
Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en OracleCarmen Soler
 
SQL Server Query Processor
SQL Server Query ProcessorSQL Server Query Processor
SQL Server Query ProcessorEduardo Castro
 

La actualidad más candente (10)

Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Administración de memoria con listas enlazadas
Administración de memoria con listas enlazadasAdministración de memoria con listas enlazadas
Administración de memoria con listas enlazadas
 
Lo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverLo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql server
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02
 
Recuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleRecuperación de la base de datos en Oracle
Recuperación de la base de datos en Oracle
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11g
 
Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en Oracle
 
SQL Server Query Processor
SQL Server Query ProcessorSQL Server Query Processor
SQL Server Query Processor
 
Bases de datos laminas
Bases de datos laminasBases de datos laminas
Bases de datos laminas
 

Destacado

Guia implementacion de mecanismos financieros rev
Guia implementacion de mecanismos financieros revGuia implementacion de mecanismos financieros rev
Guia implementacion de mecanismos financieros revalamramirezzelaya
 
Screencasting: Best Practice
Screencasting: Best PracticeScreencasting: Best Practice
Screencasting: Best PracticeGareth Graham
 
Recorregut benjamins
Recorregut benjaminsRecorregut benjamins
Recorregut benjaminsmarselles
 
2 cadê meu príncipe encantado
2 cadê meu príncipe encantado2 cadê meu príncipe encantado
2 cadê meu príncipe encantadoMicheline Lopes
 
Suspensión de acitivades durante la Semana Mechona
Suspensión de acitivades durante la Semana MechonaSuspensión de acitivades durante la Semana Mechona
Suspensión de acitivades durante la Semana MechonaKovalto Kalunga
 
El problema del conocimiento en la filosofía
El problema del conocimiento en la filosofíaEl problema del conocimiento en la filosofía
El problema del conocimiento en la filosofíaRobin Cisneros
 
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7y
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7yYpgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7y
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7ykelyR
 
Evaluacion de biodiversidad ometepe junio 09
Evaluacion de biodiversidad ometepe junio 09Evaluacion de biodiversidad ometepe junio 09
Evaluacion de biodiversidad ometepe junio 09alamramirezzelaya
 
ThePosse-LogoFull(12-14-14)-sm
ThePosse-LogoFull(12-14-14)-smThePosse-LogoFull(12-14-14)-sm
ThePosse-LogoFull(12-14-14)-smDavid Castle
 
Proyectos de informatica
Proyectos de informaticaProyectos de informatica
Proyectos de informaticaDianatiuh
 
EQi2_Workplace_Client_Sample_Report_Edited
EQi2_Workplace_Client_Sample_Report_EditedEQi2_Workplace_Client_Sample_Report_Edited
EQi2_Workplace_Client_Sample_Report_EditedAndrew Snyder
 
Cenários Macroeconómicos e Desafios da Conjuntura Actual
Cenários Macroeconómicos e Desafios da Conjuntura ActualCenários Macroeconómicos e Desafios da Conjuntura Actual
Cenários Macroeconómicos e Desafios da Conjuntura ActualUNU-WIDER
 
Semana 4 colección con el grupo
Semana 4 colección con el grupoSemana 4 colección con el grupo
Semana 4 colección con el grupoGuillermo Gómez
 

Destacado (20)

Guia implementacion de mecanismos financieros rev
Guia implementacion de mecanismos financieros revGuia implementacion de mecanismos financieros rev
Guia implementacion de mecanismos financieros rev
 
Screencasting: Best Practice
Screencasting: Best PracticeScreencasting: Best Practice
Screencasting: Best Practice
 
Guztiona
GuztionaGuztiona
Guztiona
 
Trabajo en equipo
Trabajo en equipoTrabajo en equipo
Trabajo en equipo
 
Recorregut benjamins
Recorregut benjaminsRecorregut benjamins
Recorregut benjamins
 
Taller mate 1
Taller mate 1Taller mate 1
Taller mate 1
 
2 cadê meu príncipe encantado
2 cadê meu príncipe encantado2 cadê meu príncipe encantado
2 cadê meu príncipe encantado
 
Por que "menos com menos dá mais"?
Por que "menos com menos dá mais"?Por que "menos com menos dá mais"?
Por que "menos com menos dá mais"?
 
Suspensión de acitivades durante la Semana Mechona
Suspensión de acitivades durante la Semana MechonaSuspensión de acitivades durante la Semana Mechona
Suspensión de acitivades durante la Semana Mechona
 
El problema del conocimiento en la filosofía
El problema del conocimiento en la filosofíaEl problema del conocimiento en la filosofía
El problema del conocimiento en la filosofía
 
22
2222
22
 
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7y
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7yYpgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7y
Ypgtypñtyutyvtyvt7y ypgtypñtyutyvtyvt7y
 
Evaluacion de biodiversidad ometepe junio 09
Evaluacion de biodiversidad ometepe junio 09Evaluacion de biodiversidad ometepe junio 09
Evaluacion de biodiversidad ometepe junio 09
 
ThePosse-LogoFull(12-14-14)-sm
ThePosse-LogoFull(12-14-14)-smThePosse-LogoFull(12-14-14)-sm
ThePosse-LogoFull(12-14-14)-sm
 
Proyectos de informatica
Proyectos de informaticaProyectos de informatica
Proyectos de informatica
 
Deber
Deber Deber
Deber
 
cv-cv
cv-cvcv-cv
cv-cv
 
EQi2_Workplace_Client_Sample_Report_Edited
EQi2_Workplace_Client_Sample_Report_EditedEQi2_Workplace_Client_Sample_Report_Edited
EQi2_Workplace_Client_Sample_Report_Edited
 
Cenários Macroeconómicos e Desafios da Conjuntura Actual
Cenários Macroeconómicos e Desafios da Conjuntura ActualCenários Macroeconómicos e Desafios da Conjuntura Actual
Cenários Macroeconómicos e Desafios da Conjuntura Actual
 
Semana 4 colección con el grupo
Semana 4 colección con el grupoSemana 4 colección con el grupo
Semana 4 colección con el grupo
 

Similar a Sugerencias para consultas sql

Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracleBlitzHive
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracleBlitzHive
 
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosMS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosJoseph Lopez
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sqlnnakasone
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Eduardo Castro
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Luis Jherry
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdLuis Jherry
 
Vistas en mysql
Vistas en mysql Vistas en mysql
Vistas en mysql Eduardo Ed
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySqlEduardo Ed
 
Vistas en my sql
Vistas en my sqlVistas en my sql
Vistas en my sqlEduardo Ed
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datosUTN
 
Preguntas y respuestas Técnicas de SAP HANA
Preguntas y respuestas Técnicas  de SAP HANAPreguntas y respuestas Técnicas  de SAP HANA
Preguntas y respuestas Técnicas de SAP HANASergio Cannelli
 
Susanasailematipos de consultas en access
Susanasailematipos de consultas en accessSusanasailematipos de consultas en access
Susanasailematipos de consultas en accesssusysailema
 
Abf leccion 10
Abf leccion 10Abf leccion 10
Abf leccion 10victdiazm
 
Optimizacion De Consultas
Optimizacion De ConsultasOptimizacion De Consultas
Optimizacion De ConsultasOto Tumax
 

Similar a Sugerencias para consultas sql (20)

Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracle
 
Optimizacion consultas oracle
Optimizacion consultas oracleOptimizacion consultas oracle
Optimizacion consultas oracle
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosMS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
 
Tips y sugerencias
Tips y sugerenciasTips y sugerencias
Tips y sugerencias
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bd
 
Vistas en mysql
Vistas en mysql Vistas en mysql
Vistas en mysql
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySql
 
Vistas en my sql
Vistas en my sqlVistas en my sql
Vistas en my sql
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datos
 
Preguntas y respuestas Técnicas de SAP HANA
Preguntas y respuestas Técnicas  de SAP HANAPreguntas y respuestas Técnicas  de SAP HANA
Preguntas y respuestas Técnicas de SAP HANA
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Sql
SqlSql
Sql
 
Susanasailematipos de consultas en access
Susanasailematipos de consultas en accessSusanasailematipos de consultas en access
Susanasailematipos de consultas en access
 
Abf leccion 10
Abf leccion 10Abf leccion 10
Abf leccion 10
 
Optimizacion De Consultas
Optimizacion De ConsultasOptimizacion De Consultas
Optimizacion De Consultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 

Último

CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 

Último (20)

Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 

Sugerencias para consultas sql

  • 1. INSTITUTO TECNOLOGICO DE OCOTLAN. ING. SISTEMAS COMPUTACIONALES BASE DE DATOS SUGERENCIAS PARA LAS CONSULTAS EN SQL UNIDAD 2.
  • 2. SUGERENCIAS PARA CONSULTAS EN SQL. 1. Uso de cursores Si la consulta utiliza cursores, determina antes si es posible escribirla con un tipo de cursor más eficaz (uno de avance rápido) o con una única consulta. Las consultas únicas mejoran las operaciones de cursor. Dado que un conjunto de instrucciones de cursor suele constituir una operación de bucle externo, en la que cada fila se procesa una vez con una instrucción interna, puedes contemplar la posibilidad de usar en su lugar una instrucción GROUP BY o CASE. Quizá incluso una subconsulta. 2. Uso de alias Utilizar varios alias para una sola tabla en la misma consulta para simular la intersección de índices ya no es necesario. SQL Server tiene en cuenta automáticamente la intersección de índices y puede utilizar varios en la misma tabla. 3. Uso de la parametrización Utiliza la parametrización de consultas para permitir la reutilización de los planes de ejecución de consulta almacenados en la memoria caché. Si un conjunto de consultas comparte el mismo hash de consulta y hash de plan de consulta podrías mejorar el rendimiento creando una consulta parametrizada. Además, si llamas a una consulta con parámetros, en lugar de a varias consultas con valores literales, podrás reutilizar el plan de ejecución de consulta almacenado en la memoria caché. 4. Uso de Exists Cuando queramos hacer una sub-consulta en una base de datos utilizando la sentencia NOT IN, analicemos si podemos cambiar nuestro quieres con el uso de la sentencia Exists que es mucho más eficiente que la anterior. O en todo caso, utilizar IN en vez de NOT IN, ya que esto hace un escaneo completo en la tabla descartando opciones a omitir. 5. Uso de Distinct Utilizar distinct para excluir datos duplicados es muy usado por los programadores para evitar errores de diseño de base de datos y así esconder algunos duplicidad de información, pero esto es un grave error. Es una de las sentencias que más necesita hacer I/O en el disco y forzar bastante el procesador. Por tal motivo, si no es necesario evitemos utilizarla. 6. Uso de Tops Cuando se quiere traer un grupo de registros es mejor utilizar la sentencia Top y no Rowcount, ya que esta última presenta inconvenientes con listas no ordenadas. En cambio, si la lista es ordenada es más eficiente que la sentencia Top.
  • 3. 7. Uso de*. Cuando se realizan consultas que van a devolver muchos campos es mejor definir todos los campos que queremos devolver en nuestro quieres, ya que el uso de * o Al impide el uso de índices de forma eficiente. 8. Verificar si existe un registro Muchos programadores utilizan el count (*) para ver si un registro existe en la base de datos, pero una forma más eficiente de hacerlo es con Exists. Cuando éste encuentra un registro detiene la búsqueda del mismo. 9. Uso de ORDER BY Usar ORDER BY en las QUERIES que se lancen sólo si es absolutamente indispensable. Es decir, que si es posible realizar la ordenación en el lado del cliente siempre será mejor que realizarla desde el lado del servidor SQL Server. En caso de que sea absolutamente necesario realizar la ordenación en el lado del servidor SQL Server deberemos atender a las siguientes recomendaciones: 1. Mantener el número de filas a ordenar al mínimo 2. Mantener el número de columnas a ordenar al mínimo 3. Mantener el ancho (tamaño físico) de las columnas a ordenar al mínimo 4. Ordenar columnas con datos numéricos (NO tipos de datos carácter) 10. No usar el comando GROUP BY No usarlo al menos sin una función de agregación. La cláusula GROUP BY puede usarse con o sin una función de agregación. Pero si queremos obtener un mejor rendimiento, no usaremos la cláusula GROUP BY sin una función de agregación. Esto es porque produce el mismo resultado usar DISTINCT y es más rápido. Para acelerar el uso de la cláusula GROUP BY debemos seguir las siguientes recomendaciones: 1. Mantener al mínimo el número de filas a devolver por la Query. 2. Mantener al mínimo el número de agrupaciones 3. No agrupar columnas redundantes 4. Cambiar un JOIN por una SUBQUERY cuando hay uno en la misma SELECT que tiene un GROUP BY. OTRAS RECOMENDACIONES SON. Algunas consultas consumen más recursos que otras. Por ejemplo, las consultas que devuelven grandes conjuntos de resultados y las que contienen cláusulas WHERE que no son únicas siempre consumen muchos recursos. Ningún grado de inteligencia del optimizador de consultas puede eliminar el costo de recursos de estas construcciones en
  • 4. comparación con una consulta menos compleja. SQL Server utiliza un plan de acceso óptimo, pero la optimización de consultas está limitada por lo que es posible. Sin embargo, para mejorar el rendimiento de las consultas, puede:  Agregar más memoria. Esta solución es especialmente útil si el servidor ejecuta muchas consultas complejas y varias consultas se ejecutan lentamente.  Utilizar más de un procesador. Varios procesadores permiten que el Motor de base de datos use consultas en paralelo. Para obtener más información, vea Procesar una consulta en paralelo.  Vuelva a escribir la consulta. Considere lo siguiente: o Si la consulta utiliza cursores, determine si se puede escribir la consulta de cursor con un tipo de cursor más eficaz (como un curso de sólo avance rápido) o con una única consulta. Las consultas únicas normalmente mejoran las operaciones de cursor. Debido a que un conjunto de instrucciones de cursor suele constituir una operación de bucle externo, en la que cada fila del bucle externo se procesa una vez con una instrucción interna, considere la posibilidad de utilizar en su lugar una instrucción GROUP BY o CASE, o una subconsulta. Para obtener más información, vea Tipos de cursores (motor de base de datos) y Aspectos básicos de las consultas. o Si una aplicación utiliza un bucle, considere la posibilidad de colocar el bucle en la consulta. A menudo, una aplicación contendrá un bucle que, a su vez, contendrá una consulta con parámetros que se ejecuta muchas veces y será necesario realizar un viaje de ida y vuelta en la red entre el equipo que ejecuta la aplicación y SQL Server. En su lugar, cree una sola consulta más compleja con una tabla temporal. Sólo necesita un viaje de ida y vuelta en la red, y el optimizador de consultas puede optimizar mejor la consulta única. Para obtener más información, vea Procedimientos de Transact-SQL y Variables de Transact-SQL. o No utilice varios alias para una sola tabla en la misma consulta para simular la intersección de índices. Ya no es necesario debido a que SQL Server tiene en cuenta automáticamente la intersección de índices y puede utilizar varios índices en la misma tabla de la misma consulta. Observe el ejemplo de consulta: o SELECT * FROM limiten o WHERE partkey BETWEEN 17000 AND 17100 AND o shipdate BETWEEN '1/1/1994' AND '1/31/1994' SQL Server puede utilizar índices sobre las columnas partkey y shipdate, y después realizar una coincidencia hash entre los dos subconjuntos para obtener la intersección de ííndices. o Utilice la parametrización de consultas para permitir la reutilización de los planes de ejecución de consulta almacenados en la memoria caché. Si un conjunto de consultas tiene el mismo hash de consulta y hash de plan de consulta, podría mejorar el rendimiento creando una consulta parametrizada. Llamar a una consulta con parámetros en lugar de a varias consultas con valores literales permite reutilizar el plan de ejecución de consulta almacenado en la memoria caché. Para obtener más información, vea Buscar y optimizar consultas similares utilizando hash del
  • 5. plan de consulta y de consulta y Almacenar en caché y volver a utilizar un plan de ejecución. Si no puede modificar la aplicación, puede utilizar las guías de plan de la plantilla con parametrización forzada para lograr un resultado similar. Para obtener más información, vea Especificar el comportamiento de parametrización de consultas por medio de guías de plan. o Utilice sugerencias de consultas sólo si es necesario. Las consultas que utilizan sugerencias ejecutadas en versiones anteriores de SQL Server deben probarse sin las sugerencias especificadas. Las sugerencias pueden impedir que el optimizador de consultas seleccione un plan de ejecución mejor. Para obtener más información, vea SELECT (Transact-SQL).  Utilice query_plan_hash para capturar, almacenar y comparar los planes de ejecución de consulta de las consultas a lo largo del tiempo. Por ejemplo, después de cambiar la configuración del sistema, puede comparar los valores hash del plan de consulta de las consultas esenciales con sus valores hash de plan de consulta originales. Las diferencias en los valores pueden indicarle si el cambio de la configuración del sistema produjo planes de ejecución de consulta actualizados para las consultas importantes. También podría decidir detener la ejecución de una consulta de larga duración si su hash de plan de consulta en sys.dm_exec_requests difiere de su hash de plan de consulta de línea base, que se sabe que tiene un buen rendimiento. Para obtener más información, vea Buscar y optimizar consultas similares utilizando hash del plan de consulta y de consulta.  Utilice la opción de configuración query governor (regulador de consultas). Puede utilizar la opción de configuración query governor para impedir que se consuman recursos del sistema al ejecutar consultas de larga duración. De forma predeterminada, la opción se establece para permitir que se ejecuten todas las consultas, sin importar su duración. Sin embargo, se puede establecer el regulador de consultas en el número máximo de segundos que está permitido ejecutar todas las consultas de todas las conexiones o sólo las consultas de una conexión específica. Debido a que el regulador de consultas se basa en el costo estimado de las consultas en lugar de en el tiempo real transcurrido, no tiene sobrecarga de tiempo de ejecución. También detiene las consultas de larga duración antes de que comiencen, en lugar de ejecutarlas hasta que se alcance el límite definido previamente. Para obtener más información, vea query governor cost limit, opción y SET QUERY_GOVERNOR_COST_LIMIT (Transact-SQL).  Optimice la reutilización de los planes de consultas de la caché del plan. Motor de base de datos almacena en memoria caché los planes de consultas para una posible reutilización. Si un plan de consulta no se pone en la caché, nunca podrá reutilizarse. En su lugar, los planes de consulta que no están en la caché deben compilarse cada vez que se ejecutan, lo que produce un bajo rendimiento. Las siguientes opciones de la instrucción Transact-SQL SET impiden que los planes de consulta que están en la caché se reutilicen. Un lote de Transact-SQL que contenga estas opciones SET activadas no puede compartir sus planes de consulta con el mismo lote que se compiló cuando estas opciones SET estaban desactivadas: SET ANSI_NULL_DFLT_OFF SET ANSI_NULL_DFLT_ON
  • 6. SET ANSI_NULLS SET ANSI_PADDING SET ANSI_WARNINGS SET ARITHABORT SET CONCAT_NULL_YIELDS_NULL SET DATEFIRST SET DATEFORMAT SET FORCEPLAN SET LANGUAGE SET NO_BROWSETABLE SET NUMERIC_ROUNDABORT SET QUOTED_IDENTIFIER SET TEXTSIZE