Una tabla no puede contener más de 1000 columnas.
La longitud máxima interna de una clave es 3500 bytes, pero MySQL la restringe a 1024 bytes.
          La longitud máxima de fila, excepto para columnas
          VARCHAR, BLOB y
          TEXT, es ligeramente inferior a la mitad de
          una página de base de datos. Es decir, cerca de 8000 bytes.
          Las columnas LONGBLOB y
          LONGTEXT deben ser de menos de 4GB, y la
          longitud total de la fila, incluyendo las columnas
          BLOB y TEXT, debe ser de
          menos de 4GB. InnoDB almacena los primeros
          768 bytes de una columna VARCHAR,
          BLOB, o TEXT en la fila,
          y el resto, en páginas separadas.
        
En algunos sistemas operativos antiguos, los ficheros de datos deben ser de menos de 2GB.
          El tamaño combinado de los ficheros de log de
          InnoDB debe ser inferior a 4GB.
        
El tamaño mínimo del espacio de tablas es de 10MB. El tamaño máximo es de cuatrocientos mil millones de páginas de base de datos (64TB). Este es también el tamaño máximo para una tabla.
          Las tablas InnoDB no admiten índices
          FULLTEXT.
        
          Las tablas InnoDB no admiten tipos de
          columna espaciales.
        
          ANALYZE TABLE determina la
          cardinalidad efectuando 10 accesos al azar
          en cada uno de los árboles de índices y actualizando la
          cardinalidad del índice con una estimación acorde. Dado que
          son solamente estimaciones, distintas ejecuciones de
          ANALYZE TABLE pueden producir resultados
          diferentes. Esto convierte a ANALYZE TABLE
          en una herramienta rápida sobre tablas
          InnoDB, pero no con el mismo nivel de
          exactitud que si considerara todas las filas al hacer el
          recuento.
        
          MySQL emplea las estimaciones de cardinalidad de los índices
          solamente para la optimización de uniones. Si una unión no
          se optimiza en la manera adecuada, se puede intentar el uso de
          ANALYZE TABLE. En los pocos casso en que
          ANALYZE TABLE no produce valores
          suficientemente buenos para las tablas, se puede emplear
          FORCE INDEX en las consultas para forzar el
          uso de un índice en particular, o establecer el valor de
          max_seeks_for_key para asegurarse de que
          MySQL dará preferencia a las búsquedas en índices por sobre
          el examen de las tablas. Consulte
          Sección 5.3.3, “Variables de sistema del servidor”. Consulte
          Sección A.6, “Cuestiones relacionadas con el optimizador”.
        
          En Windows, InnoDB siempre almacena
          internamente en minúsculas los nombres de tablas y bases de
          datos. Para mover bases de datos en formato binario desde Unix
          a Windows o a la inversa, se deberán haber escrito en
          minúsculas todos los nombres de tablas y bases de datos.
        
          Advertencia:
          ¡No deben convertirse las tablas de
          sistema de MySQL de la base de datos mysql
          desde su formato original MyISAM a
          InnoDB! Esta es una operación no admitida.
          Si se lleva a cabo, MySQL no se podrá ejecutar hasta que se
          recuperen las tablas de sistema anteriores desde una copia de
          respaldo o se las regenere con el script
          mysql_install_db.
        
          InnoDB no lleva una cuenta interna de las
          filas en una tabla. (Esto sería realmente complicado a causa
          de la multiversión). Para procesar una sentencia
          SELECT COUNT(*) FROM T,
          InnoDB debe examinar un índice de la
          tabla, lo cual lleva algún tiempo si el índice no está
          completamente dentro del pool de buffer. Para disponer de un
          recuento más rápido, se debe crear una tabla de recuento y
          hacer que la aplicación la actualice a medida que se producen
          inserciones y eliminaciones. Si una tabla no se modifica a
          menudo, utilizar el cache de consultas (query cache) de MySQL
          es una buena solución. También puede emplearse SHOW
          TABLE STATUS si es suficiente un recuento aproximado
          de filas. Consulte Sección 15.11, “Consejos de afinamiento del rendimiento de InnoDB”.
        
          Para una columna AUTO_INCREMENT, siempre se
          debe definir un índice para la tabla, el cual debe contener
          solamente a la columna AUTO_INCREMENT. En
          tablas MyISAM, la columna
          AUTO_INCREMENT puede formar parte de un
          índice junto a otras columnas.
        
          InnoDB no admite la opción
          AUTO_INCREMENT en sentencias
          CREATE TABLE o ALTER
          TABLE, la cual sirve para establecer el valor
          inicial de la secuencia. Para especificar este valor en
          InnoDB, debe insertarse una fila con un
          valor que sea uno menos que el deseado, y luego borrarla, o
          insertar la primera fila especificando un valor determinado.
        
          Luego de reiniciar el servidor MySQL,
          InnoDB puede reutilizar un valor antiguo
          para una columna AUTO_INCREMENT (esto es,
          un valor que se hubiese asignado a una transacción finalmente
          cancelada).
        
          Cuando una columna AUTO_INCREMENT sobrepasa
          el máximo valor que es capaz de almacenar,
          InnoDB coloca la columna en
          -9223372036854775808 (si es
          BIGINT) o en 1 (si es
          BIGINT UNSIGNED). Sin embargo, como los
          valores BIGINT tienen 64 bits, hay que
          notar que si se insertara un millón de filas por segundo, se
          demoraría cerca de trescientos mil años en agotar los
          números disponibles. Con otros tipos de columnas enteros,
          ocurre un error de clave duplicada. Esto es similar al
          funcionamiento de MyISAM, ya que es en
          mayor medida el comportamiento general de MySQL y no pertenece
          a ningún motor de almacenamiento en particular.
        
          DELETE FROM
           no regenera la
          tabla sino que elimina todas sus filas, una por una.
        nom_tabla
          TRUNCATE
           se implementa en
          tbl_nameInnoDB como DELETE FROM
           y no inicializa
          el contador de tbl_nameAUTO_INCREMENT.
        
          SHOW TABLE STATUS no proporciona
          estadísticas precisas en tablas InnoDB,
          excepto para el tamaño físico reservado por la tabla. El
          recuento de filas es solamente una estimación utilizada para
          la optimización SQL.
        
          En MySQL 5.0, la operación LOCK TABLES
          establece dos bloqueos en cada tabla si
          innodb_table_locks=1, que es el valor por
          defecto. Adicionalmente al bloqueo de tabla en la capa MySQL,
          también se establece un bloqueo de tabla en
          InnoDB. En versiones antiguas de MySQL no
          se establecía el bloqueo en InnoDB, para
          volver a este comportamiento debe especificarse
          innodb_table_locks=0. Si no se establece el
          bloqueo InnoDB, LOCK
          TABLES se completa aún cuando algunos registros de
          las tablas estén bloqueados por otras transacciones.
        
          Todos los bloqueos InnoDB efectuados por
          una transacción se liberan cuando la transacción se confirma
          o se cancela. Por lo tanto, no tiene mucho sentido invocar
          LOCK TABLES en tablas
          InnoDB cuando se está en el
          modoAUTOCOMMIT=1, porque los bloqueos
          establecidos sobre una tabla InnoDB se
          liberarán inmediatamente.
        
          Algunas veces sería útil bloquear tablas extensas en el
          curso de una trasacción. Desafortunadamente, LOCK
          TABLES, en MySQL, emite implícitamente un
          COMMIT y un UNLOCK
          TABLES. Está planeada una variante para InnoDB de
          LOCK TABLES que puede ejecutarse dentro de
          una transacción.
        
          La sentencia LOAD TABLE FROM MASTER
          empleada para la replicación de servidores esclavos no
          funciona aún con tablas InnoDB. Una
          solución temporal es cambiar a MyISAMla
          tabla en el servidor amo (master), efectuar la carga, y volver
          a cambiar la tabla en el amo (master) a su motor original
          InnoDB.
        
          El tamaño por defecto de cada página de base de datos en
          InnoDB es de 16KB. Se puede establecer en
          valores entre 8KB y 64KB recompilando el código. Se deben
          modificar los valores de UNIV_PAGE_SIZE y
          UNIV_PAGE_SIZE_SHIFT en el fichero fuente
          univ.i.
        
En MySQL 5.0, los disparadores (triggers) aún no son activados por modificaciones efectuadas en cascada a través de claves foráneas.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

