Según palabras oficiales del director de arquitectura de MySQL, Drizzle será una base de datos basada en gran parte del código de MySQL.

Drizzle se trataría de una base de datos diseñada exclusivamente para aquellas aplicaciones que tengan un patrón de comportamiento como el de las aplicaciones web, como por ejemplo: concurrencia masiva, bases de datos sin lógica de negocios y arquitecturas modernas de múltiples núcleos, entre otras.

El código de Drizzle deriva de MySQL, con la salvedad que se han quitado todas las características superfluas para las características antes mencionadas.

La arquitectura de Drizzle sería del tipo micro-kernel y mucho del código será movido a módulos. Algunas partes de MySQL, seleccionadas para su remoción incluyen vistas, triggers, stored procedures, query cache, ACLs y algunos tipos de datos.

(more…)

La sentencia de creación CREATE TABLE … SELECT … nos permite crear una tabla con los registros devueltos por una consulta de selección (SELECT).

Observemos un ejemplo:
(more…)

En publicación voy a intentar emular un FULL OUTER JOIN para aquellos DBMS que no lo soporten, por ejemplo, MySQL.

Para empezar recordemos que un FULL OUTER JOIN es así como un LEFT JOIN y RIGHT JOIN a la vez. O bien, como vimos en Inner, Outer, Natural & Cross JOINs, FULL OUTER JOIN combina los resultados de dos o más tablas, tengan o no coincidencia entre sí.

Veamos un ejemplo demostrativo:

(more…)

Usar SQL para generar SQL

El principio para la creación de cadenas SQL a partir de SQL consiste, básicamente, en recorrer la metadata (information schema) de una base de datos y armar strings sql a partir de la concatenación strings constantes y del nombre de los objetos (nombre de tablas, nombre de campos, nombre de constraints, etc.) de la base de datos.

Las consultas SQL utilizadas pueden variar en cuanto a los nombres de los campos, tablas involucradas u objetos del sistema de acuerdo al sistema de gestión de base de datos utilizado, pero el funcionamiento es el mismo. El único esfuerzo extra a realizar será investigar el diccionario de datos de cada DBMS.

Los ejemplos mencionados en el artículo original, correspoden a consultas de Oracle, en nuestro caso, veremos ejemplos similares para una base de datos MySQL:

(more…)

La intención de esta publicación es hacer un breve resumen de los distintos tipos de JOINs disponibles en SQL y para finalizar, un ejemplo práctico de cada uno de ellos.

  • INNER JOIN: es el caso de unión interna clásico, combina dos o más tablas descartando todas las filas resultados que no se correspondan en ambas.
  • LEFT OUTER JOIN (o LEFT JOIN): combina dos tablas con la diferencia que selecciona todas las filas de la primer tabla sin importar tengan o no coincidencia en la segunda. RIGHT OUTER JOIN (o RIGHT OUTER): es la opción inversa a la anterior. En la mayoría de las bases de datos actuales se puede omitir OUTER.
  • FULL OUTER JOIN: combina los resultados de dos o más tablas, tengan o no coincidencia entre sí.
  • CROSS JOIN: retorna el producto cartesiano de dos o más tablas, es decir, combina cada fila de una tabla con cada fila de otra tabla. CROSS JOIN no debería llevar la clausula ON.
  • NATURAL JOIN: Es un caso especial de INNER JOIN que compara por cuenta propia la equivalencia de columnas con el mismo nombre y tipo de dato entre dos o más tablas para hacer la combinación de ambas. Hay que tener especial cuidado con su uso, pues puede producir resultados ambiguos o generar problemas si se añaden, quitan, o renombran las columnas.

(more…)

La versión 11g de la base de datos Oracle incorpora la cláusula PIVOT que resuelve, en parte, un problema que alguna vez se me presentó y que tuve que resolver con una consulta poco intuitiva y limitada.

Paso a explicar el tema en detalle con el siguiente ejemplo:

(more…)

MySQL tiene una sintaxis bastante flexible comparada con MS SQL al momento de hacer JOINs. En MySQL puedes hacer un JOIN de dos maneras, sin embargo, sería conveniente hacerlo de la forma de MS SQL de manera de que el código sea más portable.

(more…)

SQLite es una BD transacional bajo la forma de una librería que se embebe en las aplicaciones, sin necesidad de contar con un servidor y sin configuración. La misma está escrita en C y el código es de dominio público.

Son muchas las aplicaciones que utilizan SQLite, desde aplicaciones para Escritorio, como PDAs, telefonos celulares y hasta reproductores MP3.

(more…)

Inyección SQL

Un poco de humor con SQL Inyection…

  1. Utilizar el comando EXPLAIN
  2. Utilizar permisos poco complejos: permite reducir la sobrecarga cuando los clientes ejecutan las sentencias
  3. Utilizar la función BENCHMARCH() para ver lo rápido que MySQL procesa la expresión
  4. Optimizar la cláusula WHERE: elimine paréntesis innecesarios. Use la opción SQL_SMALL_RESULT para indicarle al optimizador que el conjunto de datos a devolver es pequeño
  5. Ejecutar OPTIMIZE TABLE: defragmenta, repara y ordena los archivos
  6. Evitar columnas de longitud variable como VARCHAR, BLOB, and TEXT
  7. Utilizar INSERT DELAYED cuando los clientes no pueden esperar a que el INSERT se complete
  8. Priorizar las sentencias con INSERT LOW_PRIORITY y SELECT HIGH_PRIORITY
  9. Usar INSERT múltiple para insertar varias filas (INSERT INTO … VALUES (…),(…),(…) )
  10. Sincronizar los tipos de datos. Por ejemplo, que los tipos de datos de los campos utilizados en un JOIN sean los mismos.

Vía: 10 tips for optimizing mysql queries


Búsqueda personalizada

Suscripción

         Add to Google Reader or Homepage

        

         Add to My AOL

         Subscribe in NewsGator Online

         Add to netvibes

         Subscribe in Bloglines

Categorias

Licencia de uso

Usuarios

       web counter