2009-05-08 23 views
5

Al usar MySQL 5.1 Enterprise después de años de usar otros productos de base de datos como Sybase, Infomix, DB2; Me encuentro con cosas que MySQL simplemente no hace. Por ejemplo, solo puede generar un plan de consulta EXPLAIN para consultas SELECT.Limitaciones de MySQL

¿Qué otras cosas debo tener en cuenta?

+1

La palabra en cursiva "real" va a dejar esta pregunta cerrada como subjetiva y argumentativa, todo por sí mismo. – chaos

+0

bien, cambiado * real * a código cerrado –

+0

Sugiero eliminar esa frase por completo. "años de uso de productos de bases de datos como ..." –

Respuesta

4

Uniones exteriores completas. Pero aún puede hacer una unión externa de unión externa izquierda.

7

Usted puede echar un vistazo a la lista larga aquí: MySQL Gotchas

+0

Buena lista, pero puede no ser 100% precisa para MySQL 5.0. –

+0

correcto, aclaré la versión de mysql anterior –

1

Permitir para las funciones o Grupos

1

No cuesta una fortuna. Intente crear un sitio web agrupado en varias máquinas con múltiples núcleos en una base de datos Oracle. Ay.

1

Todavía no cumple con las restricciones de CHECK!

2

Una cosa que encontré tarde en un proyecto es que los tipos de fecha de MySQL no pueden almacenar milisegundos. ¡Datetimes y timestamps solo se resuelven en segundos! No puedo recordar las circunstancias exactas en que esto ocurrió pero terminé necesitando almacenar un int que podría convertirse en una fecha (con milisegundos) en mi código.

Los controladores JDBC de MySQL almacenan en caché los resultados de forma predeterminada, hasta el punto de que hará que el programa se quede sin memoria (arroje excepciones de OutOfMemory). Puede apagarlo, pero hay que hacerlo al pasar algunos parámetros inusuales en la declaración al crearlo:

Statement sx = c.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY); 
sx.setFetchSize(Integer.MIN_VALUE); 

Si lo hace, el controlador JDBC voluntad no resultados de caché en la memoria, y se puede hacer grandes consultas PERO ¿Qué sucede si está utilizando un sistema ORM? No crea los enunciados usted mismo y, por lo tanto, no puede cambiar el almacenamiento en caché. Lo que básicamente significa que estás completamente jodido si tu sistema ORM está tratando de hacer algo que involucre una gran cantidad de registros.

Si tuvieran algún sentido, lo harían configurable mediante la URL JDBC. Oh bien.