Foros del Web » Programando para Internet » PHP »

problema al consultar en una base de datos con millones de registros.

Estas en el tema de problema al consultar en una base de datos con millones de registros. en el foro de PHP en Foros del Web. Hola a todos , Estoy haciendo un buscador, el cual hace sus busquedas en una BD de millones de registros. Mi problema es que al ...
  #1 (permalink)  
Antiguo 04/08/2005, 03:05
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
problema al consultar en una base de datos con millones de registros.

Hola a todos ,
Estoy haciendo un buscador, el cual hace sus busquedas en una BD de millones de registros. Mi problema es que al hacer la consulta, x ejemplo, si en el nombre pongo jose% (para que busque todos los jose aunq sean con nombre compuesto) lo hace bien, xo en el momento en el que pongo %luis (xejemplo) se queda cargando muxo tiempo y finalmente no sale nada. Por favor necesito que me ayudeis es bastante importante. Gracias de antemano
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #2 (permalink)  
Antiguo 04/08/2005, 03:21
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
ten en cuenta que %luis te buscara lo que sea mas luis pero si despues tienes rodriguez por ejemplo no encontrara nada es decir :
like '%luis'
jose luis -->te lo devuelve
jose luis rodriguez-->no lo devuelve

Un Saludo
  #3 (permalink)  
Antiguo 04/08/2005, 03:48
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
El tema del apellido es un campo a parte eso ya lo tengo en cuenta. Mi problema es q cuando pongo %luis tendria q devolverme todos los q tengan luis en su nombre independientemente de sus apellidos, xo en lugar de eso, no me devuelve nada despues de una larga espera.
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #4 (permalink)  
Antiguo 04/08/2005, 04:26
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
deberia de devolverte todos los que empiezen con lo que sea y terminen en luis..

deja aqui parte del codigo para ver la cosas mas claras

Un Saludo
  #5 (permalink)  
Antiguo 04/08/2005, 04:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... no entiendo si tu caso es particular cuando usas %luis ó general cuando usas %cualquiercosa... ¿?

Primero habría que ver si tienes algún error en el script... usa a función error_reporting() a el inicio de tu código:
Código PHP:
<?php
error_reporting
(E_ALL);
// y sigues...
Dí si arroja algo...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 04/08/2005, 04:48
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
A ver mi caso es general %cualquiercosa y no es q me de ningun error es que simplemente se tira muxo tiempo esperando y al final no sale absolutamente nada, no se si es xq el tiempo de espera se agota o xq es xo me parece muy extraño.
Voy a pegar parte del codigo como a dixo DINASEN xo creo q el problema esta en la BD q es demasiado grande.
Codigo:

<?

$base="bd";

$tabla="tabla";

$conexion=mysql_connect("192.168.1.101","usuario", "contraseña");

mysql_select_db($base,$conexion);

$resultado= mysql_query("SELECT ABNOMB_TIT, ABAPELL1_TIT, ABAPELL2_TIT, ABCALLE, ABNUM, ABPOST, ABPOBL, ABPROVIN, ABTELF1, ABTELF2 FROM $tabla WHERE ABNOMB_TIT LIKE '$nom' AND ABAPELL1_TIT LIKE '$ape1' AND ABAPELL2_TIT LIKE '$ape2' AND ABCALLE LIKE '$calle' AND ABNUM LIKE '$num' AND ABPOST LIKE '$cp' AND ABPOBL LIKE '$pobl' AND ABPROVIN LIKE '$prov' ",$conexion);

echo "<table align=center border=1>";
echo "<tr>";
echo "<td> Nombre </td> <td> Primer Apellido </td> <td> Segundo Apellido </td> <td> Calle </td> <td> Número </td> <td> Código postal </td> <td> Población </td> <td> Provincia </td> <td> Teléfono </td> <td> Teléfono2 </td>";

while ($registro = mysql_fetch_row($resultado)){

echo "<tr>";

foreach($registro as $clave){
echo "<td>",$clave,"</td>";
}
}

echo "</table>";

mysql_close();

?>
__________________
No soy vago, solo soy tímido ante el esfuerzo...

Última edición por werkham; 04/08/2005 a las 05:12
  #7 (permalink)  
Antiguo 04/08/2005, 05:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por werkham
A ver mi caso es general %cualquiercosa y no es q me de ningun error es que simplemente se tira muxo tiempo esperando y al final no sale absolutamente nada, no se si es xq el tiempo de espera se agota o xq es xo me parece muy extraño.
Si el tiempo se agota... debe aparecerte un mensaje de error... si estás trabajando en un hosting, por defecto vienen desactivados los mensajes de error (lee las FAQ)...

Lee mi firma.. procura colorear el código para que se te pueda ayudar mejor... disculpa si no lo veo y hago más comentarios.. ando de salida.

Suerte!...

Edito: Cuando dije "iluminar código" me referia a el enlace de mi firma que habla a el respecto:
* Si vaz a colocar código utiliza las Etiquetas Correspondientes para visualizarlo.: http://forosdelweb.com/misc.php?do=bbcode#code
para eso son... se visualiza mejor .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 04/08/2005 a las 05:16
  #8 (permalink)  
Antiguo 04/08/2005, 05:10
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... ya me voy.. solo te dejo este enlace, quizá te sirva: www.php.net/ref.info#ini.max-execution-time

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 04/08/2005, 05:14
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
gracia.^^
Me gustaria saber si hay alguna manera de q la BD sea + rapida y mejor (es solo una tabla de 12 millones de registros) ASIAS
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #10 (permalink)  
Antiguo 04/08/2005, 05:24
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
un error que no tiene nada que ver es que te falta por cerrar un tr....
tambien imagino que las variables vendra con el %....

prueba lo que te dijo jam para ver si reporta el error por exceso del tiempo de ejecucion

Un Saludo
  #11 (permalink)  
Antiguo 04/08/2005, 05:37
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
Lo de los % si viene con las variables.
Acabo de probar lo q me dijo jam xo no me da ningun error.
Me estoy volviendo loco :S el caso es q es extraño xq cuando hago yna busqueda y no encuentra nada me aparece la table con una fila y vacia, en cambio, en este caso lo q hace es cagar durante unos cuantos minutos e irse a una pantalla totalmente en blanco y no se me ocurre nada de lo q pueda ser :S
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #12 (permalink)  
Antiguo 04/08/2005, 05:51
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
prueba a lanzar al misma sentencia que estas pidiendo en phpmyadmin a ver que ocurre alli?

has mirado el codigo fuente de lo que te devuelve(de la pagina en blanco)?

Un Saludo
  #13 (permalink)  
Antiguo 04/08/2005, 06:07
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
El codigo fuente esta totalmente vacio, es un documento en blanco ¿? ni idea... En cuanto al phpmyadmin, no lo tengo y en estos momentos no lo puedo instalar, xo he probado la consulta directamente en la consola de mysql y me salen bastantes registros aunq un dato, en mi opinion, importante es que el tiempo de respuesta de la consulta ha sido de 5 min y 25 seg. Eso del tiempo es otra cosa importante ya q el resultado deberia salir casi instantaneamente.
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #14 (permalink)  
Antiguo 04/08/2005, 06:15
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
suena muy raro esto, no existe ningun if ni nada que no haga que entre?¿

otro cosa pro que haces un foreach dentro del while?¿ si con el while ya estas recorriendo
$registro['tucampo']

y tienes algun soft que te haga run por punto corte?
  #15 (permalink)  
Antiguo 04/08/2005, 06:22
 
Fecha de Ingreso: abril-2005
Ubicación: Melilla
Mensajes: 120
Antigüedad: 12 años, 7 meses
Puntos: 1
No, no existe ningun if ni nada, el codigo es lo q pegue antes. En cuanto al foreach la verdad es no recuerdo xq lo puse ahi si =mente funciona sin el (x algo seria...^^) pues si q es esto raro raro raro, no le encuentro explicacion alguna.
__________________
No soy vago, solo soy tímido ante el esfuerzo...
  #16 (permalink)  
Antiguo 04/08/2005, 07:14
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
mmmm

LIKE '%".$nom."'

pruebalo asi sin pasarle el % en la variable o directamente asi LIKE '%luis' ...


Seguro que tienes registros que cumplan todas esas condiciones?

Un Saludo
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 09:27.