lunes, 12 de noviembre de 2012

NORMAS PARA OPTIMIZACION DE CONSULTAS



  Hola a todos perdón por las mayúsculas.
  1. LAS CONDICIONES DEBEN IR SIEMPRE EN EL ORDEN EN QUE ESTA DEFINIDO EL INDICE. SINO HUBIESE INDICE POR LAS COLUMNAS UTILIZADAS, SE PUEDE AÑADIR YA QUE TENER INDICES EXTRAS SOLO PENALIZA LOS TIEMPOS DE INSERCIÓN, ACTUALIZACIÓN Y BORRADO.
  2. CUANDO SE CREA UNA RESTRICCIÓN DE PRIMARY KEY O UNIQ, SE CREA AUTOMÁTICAMENTE UN INDICE SOBRE ESA COLUMNA.
  3. HAY QUE OPTIMIZAR DOS TIPOS DE INSTRUCCIONES.
    • LAS QUE CONSUMEN MUCHO TIEMPO EN EJECUTARSE.
    • AQUELLAS QUE NO CONSUMEN MUCHO TIEMPO PERO SON EJECUTADAS MUCHAS VECES.
  4. SI UNA APLICACIÓN QUE FUNCIONA RAPIDO SE VUELVE LENTA, HAY QUE PARAR Y ANALIZAR LOS FACTORES QUE HAN PODIDO CAMBIAR:
    • EL VOLUMEN DE DATOS
    • NUEVOS INDICES
    • TRIGGERS
  5. UTILIZAR SIEMPRE QUE SEA POSIBLE LA MISMA CONSULTA.
  6. LAS CONSULTAS MAS UTILIZADAS DEBEN ENCAPSULARSE EN PROCEDIMIENTOS ALMACENADOS. ESTO ES DEBIDO A QUE EL PROCEDIMIENTO ALMACENADO SE COMPILA Y ANALISA UNA SOLA VEZ, MIENTRAS QUE UNA CONSULTA LANZADA A LA BASE DE DATOS DEBE SER ANALIZADO OPTIMIZADO Y COMPILADO CADA VEZ QUE SE LANZA.
  7. LOS FILTROS DE LAS CONSULTAS DEBEN SER LO MAS ESPECIFOCOS POSIBLES.
    • WHERE CAMPO = ‘JOSUE’;
  8. DEBE EVITAR LA CONDICION IN
    • WHERE CODIGO_CLIENTE IN (SELECT  …) – EN SU LUGAR USAR UN JOIN
    • MANUALMENTE SOLO ACEPTA 100 VALORES
  9. TENER CUIDADO CUANDO SE METE UN SELECT DENTRO DE UN IN YA QUE LA CONSULTA PUEDE RETORNAR MUCHAS FILAS, SE RECOMIENDA USAR UN JOIN.
  10. CUANDO SE HACE UNA CONSULTA MULTITABLA EL ORDEN EN EL QUE SE PONEN LAS TABLAS EN EL FROM INFLUYE EN EL PLAN DE EJECUCIÓN, AQUELLAS TABLAS QUE RETORNAN MAS FILAS DEBEN IR EN LAS PRIMERAS POSICIONES, MIENTRAS LAS TABLAS CON POCAS FILAS DEBEN SITUARSE AL FINAL DE LA LISTA DE LAS TABLAS.
  11. SI EN LA CLAUSULA WHERE SE UTILIZAN CAMPOS INDEXADOS COMO ARGUMENTOS DE FUNCIONES EL INDICE QUEDARA DESACTIVADO.
    • WHERE SALDO > 0
    • WHERE ROUND(SALDO) > 0  -- DE NADA SIRBE USAR UN INDICE PORQUE ESTA INSTRUCCIÓN LO DESACTIVA (ROUND)
  12. SIEMPRE QUE SEA POSIBLE SE DEBE EVITAR LAS FUNCIONES DE CONVERSIÓN DE TIPO DE DATOS E INTENTAR HACER SIEMPRE COMPARACIONES DE CAMPOS DEL MISMO TIPO.
    • CAST        
  13. UNA CONDICIÓN NEGADA CON EL OPERADOR NOT DESACTIVA LOS INDICES.
    1. NOT IN
  14. UNA CONSULTA CALIFICADA CON LA CLAUSULA DISTINC DEBE SER ORDENADA POR EL SERVIDOR, AUN QUE NO SE INCLUYA LA CLAUSULA ORDER BY. (AL DISTINC PONERLE UN ORDER BY)
  15. SI VA A REALIZAR UNA OPERACIÓN DE INSERCIÓN, BORRADO O ACTUALIZACIÓN MASIVA, ES CONVENIENTE DESACTIVAR LOS INDICES, YA QUE POR CADA OPERACIÓN INDIVIDUAL SE ACTUALIZARAN.
  16. UTILIZAR TRIGGER COMO ULTIMA OPCIÓN.

No hay comentarios:

Publicar un comentario