• Publicidad

Búsqueda a partir de datos de formulario

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Búsqueda a partir de datos de formulario

Notapor panterozo » 2011-11-23 12:05 @545

Estimados:

Antes de programar alguna solución al problema, quería comentarlo con Uds. y ver qué es lo que se puede hacer, antes de hacerlo claro :P...

Desde un formulario web el usuario podrá buscar por sexo, edad, dirección, teléfono, email, comuna, región, etc... El formulario tiene unos 30 campos para realizar la búsqueda específica, donde se pueden seleccionar o no, los campos anteriores...

Una vez recibiendo los valores del formulario, no quiero armar una Query con millones de WHERE comuna = ? AND blabla = ?, ya que esta solución puede caerse y no es muy eficiente que digamos; además, por los recursos que eventualmente podría ocupar.

He estado leyendo de índices en BD (MySQL), que quizás ayude a este problema, pero me gustaría saber si alguno de Uds. se topó alguna vez con un problema como este y cuál fue la solución que adoptaron.

Espero puedan ayudarme ;)

¡¡¡Saludos y gracias!!!
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Publicidad

Re: Búsqueda a partir de datos de formulario

Notapor explorer » 2011-11-23 12:20 @556

panterozo escribiste:Una vez recibiendo los valores del formulario, no quiero armar una Query con millones de WHERE comuna = ? AND blabla = ?, ya que esta solución puede caerse y no es muy eficiente que digamos; además, por los recursos que eventualmente podría ocupar.
Al contrario: es muy eficiente y consume muy pocos recursos, ya que es responsabilidad del motor de la base de datos el hacer esa búsqueda.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sql
  2.     = 'SELECT * FROM ' . $database
  3.     . 'WHERE '
  4.     . join ' AND ', map { "$_=?" } @campos
  5.     ;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Hoy en día, en Perl, se usan módulos superespecializados, como DBIx::Class, para no tener que escribir ni una línea de código SQL.

panterozo escribiste: He estado leyendo de índices en BD (MySQL), que quizás ayude a este problema, pero me gustaría saber si alguno de Uds. se topó alguna vez con un problema como este y cuál fue la solución que adoptaron.
Consiste en poner índices en aquellos campos por los que se supone que más vamos a realizar la búsqueda. ¡Ojo!, no en todos los campos de la tabla...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda a partir de datos de formulario

Notapor panterozo » 2011-11-23 12:47 @574

explorer escribiste:Al contrario: es muy eficiente y consume muy pocos recursos, ya que es responsabilidad del motor de la base de datos el hacer esa búsqueda.

De hecho, para el motor de BD es mejor utilizar INNER JOIN que WHERE... Hay que pensar que necesito unir muchas tablas en la consulta.

Entiendo también que los índices los pondré solo dentro de las columnas que sean MUY buscadas, pero aún tengo las dudas de cómo hacer las consultas de forma eficiente, ocupando al máximo el motor de BD. Pienso que con unos 500 mil registros, la solución de enlazar tablas con WHERE, e incluso INNER JOIN no sean muy eficientes.

También hay diferencias si uno busca primero por sexo y luego teléfono, o al revés.

¡¡Saludos!!
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Búsqueda a partir de datos de formulario

Notapor explorer » 2011-11-23 15:49 @700

¿INNER JOIN? No has dicho nada de que sean varias tablas...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda a partir de datos de formulario

Notapor panterozo » 2011-11-23 18:28 @811

Pensé que era lógico por el tema de región y comuna, que están en tablas diferentes en un buen modelo :P... sorry :P...

Tengo entendido también, que si hago las sentencias SQL en el motor de MySQL la consulta o transacciones deben ser más rápidas que si las hago una a una desde Perl. Para esto estaba pensando en un procedimiento almacenado, aunque sigo evaluando el tema.

¡¡¡Saludos!!!
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 42 invitados