2010-09-17 12 views
12

Sé cómo escribir consultas SQL y puedo obtener los resultados que necesito. Pero a veces mis consultas son lentas y no entiendo completamente por qué.¿Cómo puedo aprender a optimizar las consultas SQL?

¿Cuáles son algunos buenos recursos para aprender a escribir consultas eficientes y optimizar las consultas que ya he escrito?

+1

¿Qué es argumentativo sobre esto? –

+2

¿No debería ser esta wiki de la comunidad, como preguntas como "¿Qué libro es un comentario para C?" – fuz

+0

¿Está interesado principalmente en la optimización de consultas SQLServer u optimización para otros DBMS también? Las técnicas tienden a variar entre los dialectos de SQL. –

Respuesta

20

Yo diría que las cosas principales son:

  • comprender la naturaleza basada en el conjunto de SQL leyendo libros plataforma neutral como Celko's; esto lo ayudará a evitar cometer errores novatos, como usar cursores (u otros enfoques iterativos) donde no se necesiten.
  • Aprenda los conceptos básicos de la normalización y cuándo desnormalizar; las consultas eficientes comienzan con datos bien organizados.
  • Comprender dónde los índices pueden ser útiles y donde no pueden; por ejemplo, comprender cómo la cardinalidad de sus datos afecta la eficiencia del índice, qué son las consultas de SARGable y cuándo usar índices de varias columnas.
  • Aprenda a usar EXPLAIN PLAN o su equivalente para su plataforma; al observar cómo se está compilando su consulta y los recursos que está consumiendo, comprenderá mejor los cuellos de botella.
  • Conozca los métodos específicos de la plataforma, como las vistas indexadas/materializadas, la indexación de texto completo y los métodos para buscar y tratar datos jerárquicos.
+0

+1 que lo cubre bastante bien. –

+0

A su punto en los índices, agregaría aprender qué es un índice de cobertura. Los índices funcionales y filtrados/parciales también pueden ser útiles para conocer, aunque son bastante oscuros y no son ampliamente compatibles. –

0

usa índices donde las tablas pueden usar uno, y también ejecuta Database Tuning Advisor en una consulta si tienes SQL Server.

2
+0

Cada vendedor de bases de datos tiene algún equivalente de este libro, y sí el ajuste del rendimiento es un tema complejo que se aprende mejor de uno de estos libros grandes. Y el ajuste de rendimiento es muy específico de Db, lo que ayuda a SQl Server a dañar en ORacle. – HLGEM

+0

De acuerdo con HLGEM, dudaría en recomendar una plataforma y un libro específico de la versión como este cuando no se haya especificado una plataforma de base de datos. – RedFilter

6

Ha sido un tiempo desde que tuve que usarlo, pero me encontré con SQL Tuning a ser muy útil en un trabajo que tuve hace unos años.

1

Para información específica de MySQL, chapter 7 del manual de referencia tiene que ver con la optimización. El § 7.3, en particular, cubre MySQL statement optimization. La wiki de PostgreSQL documenta de manera similar el optimizing específicamente para ese RDBMS. "How To: Optimize SQL Queries" de Microsoft está retirado; No estoy seguro de si hay un documento más reciente. Oracle tiene un par de documentos en query optimization para las distintas versiones.

Cuestiones relacionadas