2009-01-21 17 views
9

¿Cómo se ajusta una ejecución a una consulta SQL?Performance Tuning SQL - ¿Cómo?

  • ¿Qué trucos/herramientas/conceptos se pueden usar para cambiar el rendimiento de una consulta SQL?
  • ¿Cómo se pueden cuantificar los beneficios?
  • ¿De qué hay que tener cuidado?


qué trucos/herramientas/conceptos se pueden utilizar para cambiar el rendimiento de una consulta SQL?

  • ¿Cómo usar los índices? ¿Cómo funcionan en la práctica?
  • Datos normalizados vs desnormalizados? ¿Cuáles son las compensaciones de rendimiento vs diseño/mantenimiento?
  • Mesas intermedias preprocesadas? ¿Creado con disparadores o trabajos por lotes?
  • ¿Reestructurar la consulta para usar Tablas de temperatura, Sub Consultas, etc.?
  • ¿Separa las consultas complejas en múltiplos y UNION los resultados?
  • ¿Algo más?


¿Cómo se puede cuantificar el rendimiento?

  • ¿Lee?
  • Tiempo de CPU?
  • "% Query Cost" cuando se ejecutan diferentes versiones juntas?
  • ¿Algo más?


¿Qué se necesita tener cuidado de?

  • ¿Tiempo para generar planes de ejecución? (procedimientos almacenados vs Inline consultas)
  • procedimientos almacenados se ven obligados a volver a compilar
  • Prueba de conjuntos de datos pequeños (¿Las consultas aumentan linealmente, o ley del cuadrado, etc?)
  • Los resultados de carreras anteriores se almacenan en caché
  • Optimizar el "caso normal", pero dañar el "peor caso"
  • ¿Qué es "Parameter Sniffing"?
  • ¿Algo más?


Nota para los moderadores: Esta es una gran pregunta, ¿debería haber dividirlo en varias de las preguntas?

Nota Para respondedores: Debido a que esta es una pregunta enorme favor hacer referencia a otras preguntas/respuestas/artículos en lugar de escribir largas explicaciones.

Respuesta

7

Me gusta mucho el libro "Profesional SQL Server 2005 Performance Tuning" para responder esto. Es Wiley/Wrox, y no, no soy un autor, je. Pero explica muchas cosas que pides aquí, además de problemas de hardware.

Pero sí, esta pregunta es mucho más allá del alcance de algo que se puede responder en un cuadro de comentarios como este.

+0

1 Estoy de acuerdo un buen libro es un buen paso, me gusta el servidor de la optimización del rendimiento de SQL 2005 en el interior – SQLMenace

0

aquí hay algunos pasos básicos que podemos seguir para aumentar el rendimiento:

  1. Verifique los índices en pk y fk para las tablas involucradas si todavía está tomando el índice de tiempo de las columnas presentes en la consulta.
  2. Todos los índices se modifican después de cada operación, por lo que amablemente no indice todas y cada una de las columnas
  3. Antes de la inserción de lotes, elimine los índices y vuelva a crear los índices.
  4. Seleccionar moderación
  5. uso si existe en lugar de recuento
  6. Antes de conexiones de red primera verificación acusando dba