Oracle posee un optimizador interno que le permite perfeccionar el plan de ejecución de una consulta. A veces, las características de la base de datos cambian de manera tan rápida que las estadísticas de este optimizador no llegan a ser actualizadas. En tal caso, los hints podrían ser de ayuda.
¿Qué son los hints?
Estos no son más que parámetros que se sitúan después del comando SELECT y que indican al optimizador de Oracle cómo actuar.
¿Qué hints existen para la optimización de resultados?
- ALL_ROWS: es utilizado normalmente para procesos por lotes o para los sistemas de almacenamiento de datos. Indica al optimizador que utilice el mínimo de recursos para que devuelva el resultado completo.
- FIRST_ROWS: el objetivo del optimizador es devolver la primera línea de la consulta en el menor tiempo posible.
- CHOOSE: tiene en cuenta las estadísticas, si es que existen, y utiliza un optimizador basado en costes.
- RULE: le indica al optimizador que únicamente determine el plan de ejecución utilizando reglas estrictas sin tener en cuenta el contexto (estadísticas y costes de acceso) u otros hints en la consulta.
¿Qué hints existen para el modo de acceso?
- CLUSTER: indica al optimizador que obtenga los datos de una tabla clusterizada.
- FULL: indica al optimizador una lectura completa de la tabla.
- ROWID: indica al optimizador una lectura de la tabla por Rowid.
- INDEX: fuerza el uso del índice "index".
- OTROS: INDEX_ASC, INDEX_COMBINE, INDEX_DESC, INDEX_FFS, INDEX_JOIN, NO_INDEX, HASH, AND_EQUAL.
¿Qué hints existen para transformar consultas?
- FACT
- MERGE
- NO_EXPAND
- NO_EXPAND_GSET_TO_UNION
- NO_FACT
- NO_MERGE
- NOREWRITE
- REWRITE
- STAR_TRANSFORMATION
- USE_CONCAT
¿Qué hints existen para las operación de unión SQL?
- DRIVING_SITE
- HASH_AJ
- HASH_SJ
- LEADING
- MERGE_AJ
- MERGE_SJ
- NL_AJ
- NL_SJ
- USE_HASH
- USE_MERGE
- USE_NL
¿Qué hints existen para la ejecución en paralelo?
- NOPARALLEL
- PARALLEL
- NOPARALLEL_INDEX
- PARALLEL_INDEX
- PQ_DISTRIBUTE
¿Qué hints suplementarios hay?
- ANTIJOIN
- APPEND
- BITMAP
- BUFFER
- CACHE
- CARDINALITY
- CPU_COSTING
- DYNAMIC_SAMPLING
- INLINE
- MATERIALIZE
- NO_ACCESS
- NO_BUFFER
- NO_MONITORING
- NO_PUSH_PRED
- NO_PUSH_SUBQ
- NO_QKN_BUFF
- NO_SEMIJOIN
- NOAPPEND
- NOCACHE
- OR_EXPAND
- ORDERED
- ORDERED_PREDICATES
- PUSH_PRED
- USH_SUBQ
- QB_NAME
- RESULT_CACHE
- SELECTIVITY
- SEMIJOIN
- SEMIJOIN_DRIVER
- STAR
- WAP_JOIN_INPUTS
- USE_ANTI
- USE_SEMI
¿Algún ejemplo de la sintaxis adecuada?
La sintaxis adecuada sería:
-
SELECT /* + hint(table) */ column1, column2 FROM table WHERE condition;
Base de datos
- Hint parallel oracle ejemplos
- Parallel oracle ejemplos
- Hint parallel oracle
- Ejemplos de extranet en la vida cotidiana > Foros - Redes
- Unlock key hint number netbook del gobierno > Foros - Windows 7
- Fuentes de información no confiables ejemplos [resuelto] > Foros - Internet
- Funcion si y o anidada ejemplos resueltos [resuelto] > Foros - Excel
- Ejemplos de claves para banesco > Guide
- Cómo eliminar y evitar mostrar registros duplicados en MySQL
- Secuencias Oracle: cómo se crean, modifican y reinician
- Cómo exportar/importar un diagrama de SQL Server
- Cómo ver los usuarios conectados en MySQL y detener procesos
- Cómo cambiar la contraseña por defecto de root en MySQL
- Cómo eliminar una base de datos en MySQL
- Cómo recuperar la contraseña de Oracle con SQL Developer
- Código de error interno ORA-00600 arguments: cómo evitarlo
- Cómo quitar y validar los caracteres especiales en Oracle
- Hacer copia de seguridad de bases de datos MySQL: mysqldump
- Cómo relacionar y unir dos tablas en MySQL con JOIN
- SQLite: manipular bases de datos con una interfaz gráfica
- Base de datos Oracle: componentes de la arquitectura
- Función DATE_SUB en MySQL: registros con fecha de ayer...
- Error mysqld.exe dejó de funcionar y debe cerrarse: solución
- Cómo resolver el error TOO MANY CONNECTIONS en MySQL
- Optimizar en MySQL: bases de datos, consultas, tablas...
- Copia de seguridad de base de datos Oracle: los mejores tips