Mysql, consulta registro sin integridad referencial

Alvaro Herrera alvherre en alvh.no-ip.org
Mie Oct 1 23:25:15 CLT 2008


Rodrigo Fuentealba escribió:
> El día 1 de octubre de 2008 20:41, Juan Manuel Doren <jm.doren en ok.cl> escribió:

> > ¿como sabes que es el optimizador el que pone la consulta lenta? sin
> > son mogollones de filas en las tablas se va a demorar cualquier cosa,
> > la M de mySQL no es por Magic
> 
> Ya me he encontrado con aquello. Internamente existe un "algo"
> (llamémosle procedimiento) que traduce el SQL a un lenguaje más
> relacionado con el motor de bases de datos. Éste permite sacar los
> datos precisos de la base descartando los datos que no concuerdan.

Hay dos "algos" aquí.  El parser genera una estructura que representa la
consulta que el usuario envía en SQL.  El primer "algo" es el
optimizador, que toma esa estructura generada por el parser y la
convierte en una estructura distinta, que devuelve los datos pedidos,
pero de la manera más eficiente que sea capaz.  (Obviamente, el
optimizador no es perfecto, y posiblemente habrá una manera mejor de
obtener los datos pero el optimizador no la conoce o no sabe cómo
conseguirla).

El segundo "algo" es el ejecutor, que toma la representación obtenida
por el optimizador y la ejecuta.  Si el ejecutor tiene más mecanismos a
su disposición, entonces el optimizador podrá usar distintos tipos de
ejecuciones.  Por lo tanto, para poder permitir ejecuciones más
eficientes, tanto el ejecutor tiene que mejorar para dar más formas de
hacer las cosas, como el optimizador, para utilizarlas de la manera más
eficiente posible.

El optimizador de MySQL es muy básico.  Por ejemplo con respecto a los
subselects, cuando se implementaron (5.0 creo?) estaban más o menos al
nivel en que estaban en Postgres cuando se implementaron (hace más de 10
años).  Desde entonces el optimizador de Postgres con respecto a los
subselects y otras clases de constructos ha cambiado enormemente (es
cosa de ver el número de líneas de código), mientras que el de MySQL
sigue en pañales.

-- 
Alvaro Herrera                 http://www.amazon.com/gp/registry/CTMLCN8V17R4
"El sentido de las cosas no viene de las cosas, sino de
las inteligencias que las aplican a sus problemas diarios
en busca del progreso." (Ernesto Hernández-Novich)


Más información sobre la lista de distribución Linux