Author: Escrito por Martin Utesch del Instituto de Control Automático de la Universidad de Minería y Tecnología en Freiberg, Alemania.
Entre todos los operadores relacionales, uno de los más difícil de procesar y optimizar es la unión. El número de vias alternativas para responder a una consulta crece exponencialmente con el número de uniones incluidas en ella. EL esfuerzo adicional de optimización esta causado por la existencia de una variedad de metodos de unión para procesar uniones individuales (p.e., bucle anidado, exploración de índice, fusión de unión en Postgres) y de una gran variedad de indices (e.p., árbol-r, árbor-b, hash en Postgres) como camino de acceso para las relaciones.
La actual implementación del optimizador de Postgres realiza una busqueda cercana y exhaustiva sobre el espacio de las estrategias alternativas. Esta técnica de optimización de consulta no es adecuada para soportar los dominios de la aplicación de base de datos que implica la necesidad de consultas extensivas, tales como la inteligencia artificial.
El Instituto de Control Automático de la Universidad de Minería y Tecnología, en Freiberg, Alemania, se encontró los problemas descritos cuando su personal quiso utilizar la DBMS Postgres como software base para sistema de soporte de decisión basado en el conocimiento para mantener un red de energía eléctrica. La DBMS necesitó manejar consultas con unión para el motor de inferencia del sistema basado en el conocimiento.
Las dificultades del rendimiento al explorar el espacio de los posibles planes de la consulta hizo surgir la demanda de un nueva técnica de optimización que se ha desarrollado.
A continuación, proponemos la implementación de un Algoritmo Genético como una opción para el problema de la optimización de consultas de la base de datos.