Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

¿Que será más eficiente y por qué?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Mensaje Vie Feb 02, 2007 9:00 am
andydavid
Perlero Nuevo
Perlero Nuevo
Registrado: 27 May 2005
Mensajes: 20
Ubicación: RB_VENEZUELA
¿Que será más eficiente y por qué? Responder citando

Hermanos perleros, les escribo por una inquietud que tengo de un tema en base de datos.

La cuestión es que tengo un conjunto de tablas relacionadas para una aplicación que desarrollo en Ajax. Bueno las tablas son: país, estado/Provincia, Ciudad, Municipio, Sector, casa.

En la aplicación una vez escogido el país se cargan sólo las ciudades referentes a este país y así sucesivamente.

Mi duda es la siguiente: las personas a las que se le está realizando la aplicación nos informan que a ella se conectaran unos 25.000 usuarios de forma simultanea en un horario normal de trabajo de 8:00 a 16:30 todos contra un solo servidor pero uno de sus técnicos nos dicen que para reducir el tiempo de respuesta del sistema, es más eficiente crear una sola tabla ubicación que contenga las 6 tablas anteriores y ¡¡realizar consultas recursivas!!.

Bueno quisiera saber si alguno de ustedes tiene experiencia con un caso similar y si realmente es mucho más eficiente esta propuesta y por que.

Se los agradecería mucho.
Mensaje Vie Feb 02, 2007 11:34 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
Responder citando

Pues depende del tamaño total de la información y de cómo se hagan las consultas.

Si el tamaño total es pequeño, es más eficiente tenerlo todo en un único fichero porque reducimos la búsqueda a una sola consulta SQL.

Pero si es mayor o si el modo de trabajo consiste en que los usuarios van haciendo selecciones de la información en un sistema interactivo, como puede ser Ajax, es mucho mejor repartir la información.

El ejemplo más sencillo es el que has puesto: primero seleccionar país. Si sólo tuviéramos una tabla deberíamos hacer una consulta para saber qué países tenemos. Si tuviéramos varias tablas, sólo tendríamos que leer la tabla países. En el primer caso la base de datos necesitaría recorrer la tabla para localizarles y sacar los valores únicos o usar una tabla de índices externa. En el segundo caso no haría falta nada de eso. Sólo sacar valores y punto.

Lo de las consultas recursivas me suena a hacer SELECT de SELECT o SELECT ... WHERE y eso en realidad está escondiendo las mismas consultas que haremos teniendo las tablas por separado.

Al menos, es mi opinión. (Se puede hacer una prueba de tiempos, naturalmente).
Mensaje Vie Feb 02, 2007 4:38 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

Hola:

Tiene razón explorer. Viendo que el perfomance es muy importante en la aplicación que estás haciendo, sería muy conveniente que hicieras pruebas de las dos maneras de llevar a cabo esto y ya con los números podrás sacar las conclusiones.

Como yo lo veo, creo que es más lógico que tengas cada dato en su tabla por separado todo unido por índices. Si sabes usar bien los índices tu rendimiento será mucho mejor.

Aparte me parece que teniendo cada tipo de dato en su propia tabla, hará que puedas hacer cambios sin ningún problema, por ejemplo, agregar nuevas ciudades, para ello no tendrás que hacer cambios en los estados ni en los países.

Saludos
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group