Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como particionar tabla mysql

Estas en el tema de Como particionar tabla mysql en el foro de PHP en Foros del Web. Buenas amigos o comento estoy trabajando en una aplicación para una empresa y me han dado una base de datos que es un dolor de ...
  #1 (permalink)  
Antiguo 23/07/2014, 06:20
 
Fecha de Ingreso: octubre-2013
Mensajes: 30
Antigüedad: 10 años, 5 meses
Puntos: 3
Pregunta Como particionar tabla mysql

Buenas amigos o comento estoy trabajando en una aplicación para una empresa y me han dado una base de datos que es un dolor de cabeza, todos los datos están en una única tabla, por ello quiero coger algunas columnas y hacer una tabla nueva con ellas. Sería fácil si estuviera vacía, pero tiene más de 130000 registros que tendré que llevarlos a la tabla que cree.

Se os ocurre que podría hacer?

Muchas gracias.

Saludos
  #2 (permalink)  
Antiguo 23/07/2014, 06:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Como particionar tabla mysql

Habria que hacer un analisis completo de esa tabla y del modelo de datos que peude que haya ahi oculto.

Particionar no es el concepto que planteas, particionar es "dividir" una tabla en varias particiones para que siendo varias tablas actuen como si fuera una sola, por ejemplo por fecha (http://infodocs.net/articulo/mysql/p...ablas-en-mysql). Separar unos campos de una tabla no seria lo mismo.

Pasos para separar campos.

TablaOriginal
id Pk
campo1
...
campoN

Quiero separar los campos 3 y 25 por ejemplo

Creo una tabla nueva, con su id con un idOriginal que sea una FK a la tablaOriginal

tablaNueva
id PK
idOriginal FK
campo3
campo25

Inserto datos

Código MySQL:
Ver original
  1. INSERT INTO tablaNueva (idOriginal,campo3,campo25)
  2.      SELECT id,campo3,campo25
  3.            FROM tablaOriginal
  4.                 WHERE campo3 IS NOT NULL
  5.                          OR campo25 IS NOT NULL;

Solo copio los datos de aquellos registro que tengan algun dato en esos campos, con ello empiezo a optimizar la bbdd.

Una vez copiados los datos uso ALTER TABLE para eliminar los campos de la tabla original.

Código MySQL:
Ver original
  1. ALTER TABLE tablaOriginal DROP COLUMN campo3;
  2. ALTER TABLE tablaOriginal DROP COLUMN campo25;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 23/07/2014 a las 06:45
  #3 (permalink)  
Antiguo 23/07/2014, 07:13
 
Fecha de Ingreso: octubre-2013
Mensajes: 30
Antigüedad: 10 años, 5 meses
Puntos: 3
Respuesta: Como particionar tabla mysql

Cita:
Iniciado por quimfv Ver Mensaje
Habria que hacer un analisis completo de esa tabla y del modelo de datos que peude que haya ahi oculto.

Particionar no es el concepto que planteas, particionar es "dividir" una tabla en varias particiones para que siendo varias tablas actuen como si fuera una sola, por ejemplo por fecha ([url]http://infodocs.net/articulo/mysql/particionado-de-tablas-en-mysql[/url]). Separar unos campos de una tabla no seria lo mismo.

Pasos para separar campos.

TablaOriginal
id Pk
campo1
...
campoN

Quiero separar los campos 3 y 25 por ejemplo

Creo una tabla nueva, con su id con un idOriginal que sea una FK a la tablaOriginal

tablaNueva
id PK
idOriginal FK
campo3
campo25

Inserto datos

Código MySQL:
Ver original
  1. INSERT INTO tablaNueva (idOriginal,campo3,campo25)
  2.      SELECT id,campo3,campo25
  3.            FROM tablaOriginal
  4.                 WHERE campo3 IS NOT NULL
  5.                          OR campo25 IS NOT NULL;

Solo copio los datos de aquellos registro que tengan algun dato en esos campos, con ello empiezo a optimizar la bbdd.

Una vez copiados los datos uso [URL="http://dev.mysql.com/doc/refman/5.1/en/alter-table.html"]ALTER TABLE[/URL] para eliminar los campos de la tabla original.

Código MySQL:
Ver original
  1. ALTER TABLE tablaOriginal DROP COLUMN campo3;
  2. ALTER TABLE tablaOriginal DROP COLUMN campo25;

Muchas gracias, fue una solución muy simple y efectiva, de verdad gracias

Etiquetas: mysql, particionar, registro, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:19.