• Publicidad

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

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

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

Notapor andydavid » 2007-02-02 10:00 @458

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.
ESTUDIO CARACAS1348
Avatar de Usuario
andydavid
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2005-05-27 08:47 @408
Ubicación: RB_VENEZUELA

Publicidad

Notapor explorer » 2007-02-02 12:34 @565

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).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-02-02 17:38 @776

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
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado