Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mal rendimiento base de datos grande

Estas en el tema de Mal rendimiento base de datos grande en el foro de Mysql en Foros del Web. Hola necesito ayuda por favor!! tengo problemas de rendimiento con una base de datos de muchos registros. Solo tengo una tabla porque creo que no ...
  #1 (permalink)  
Antiguo 24/01/2008, 13:09
 
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Mal rendimiento base de datos grande

Hola necesito ayuda por favor!! tengo problemas de rendimiento con una base de datos de muchos registros. Solo tengo una tabla porque creo que no se puede inexar o por lo menos no se, las busquedas son lentas. la estructura de mi tabla es asi:

CREATE TABLE `tabla` (
`NOMBRE` varchar(255) default NULL,
`APE1` varchar(255) default NULL,
`APE2` varchar(255) default NULL,
`TLFS` varchar(255) default NULL,
`ROB` int(11) default NULL,
`ORIGEN` varchar(50) default NULL,
`XPROV` varchar(50) default NULL,
`XMUN` varchar(50) default NULL,
`XLOCA` varchar(50) default NULL,
`XCP` varchar(5) default NULL,
`XTV` varchar(5) default NULL,
`XNOMVIA` varchar(50) default NULL,
`XNUMVIA` varchar(150) default NULL,
`XSEX` varchar(1) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ojalá que alguien me pueda ayudar!!!

Gracias!!!
  #2 (permalink)  
Antiguo 24/01/2008, 15:19
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Mal rendimiento base de datos grande

Ningun campo es indice.

el pobre motor de mysql tiene que recorrer secuencialmente cada registro de la tabla para dar con el criterio que pidas.

Comparemos.....imaginate que te pidan buscar a ti, en una guia telefonica ( de papel ) todos los telefonos que figuren alli, sin importar apellido o ciudad, solo que dicho numero empiece con 441.
Cuanto tardarias?....piensa por que!....pues porque te piden hacer algo en un listado que está, dada tu necesidad, desordenado. No te queda mas alternativa que ir de la primer a la ultima pagina, buscando los numeros que empiecen por 441

Que tal si ahora te pidieran que busques cuantos telefonos hay SOLO en la ciudad 'xyz' asociado a personas de apellido Fernandez.
Cuanto tardarias?....piensa por que!
  #3 (permalink)  
Antiguo 24/01/2008, 19:31
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Mal rendimiento base de datos grande

Estoy de acuerdo y veo un mal diseño al crear las tablas, por ejemplo:
¿Crees que puede haber NOMBRE, APE1 y APE2 de más de 20 o 30 caracteres? tener esos campos declarados en 255 no es para nada eficiente.

Si creas índices para esos campos, PEOR. Lo recomendable en motores de BD es crear índices en campos numéricos y no caracter para tener tiempos de respuesta más rápidos.

Yo te aconsejaría que replantees tu diseño para que trates de eficientizarlo.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 28/01/2008, 05:58
 
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Re: Mal rendimiento base de datos grande

Muchas gracias por vuestra ayuda! estoy siguiendo vuestros consejos y optimizando mi base de datos. Estoy reduciendo el tamaño de los campos que me habeis dicho y cambiando el campo TLFS de VARCHAR a INTEGER como índice para las busquedas por telefono. Por otro lado creo que entiendo bien lo de indexar las tablas y crear claves primarias y foraneas en las tablas, entiendo porque antes mis busquedas eran tan lentas. Ahora mi pregunta es la siguiente, para optimizar las busquedas por telefono:
¿Deberia en vez de una tabla tener 2 tablas de la siguiente manera...?

tabla_telefonos: telefono(primary_key), id_user
tabla_usuario: id_user, nombre, ape1, ape2, etc

1 usuario - N telefonos

Gracias de nuevo por vuestra atencion

Saludos!
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 01:06.