Importante duda sobre Consulta SQL AVANZADA

Iniciado por Skeletron, 4 Agosto 2009, 09:03 AM

0 Miembros y 1 Visitante están viendo este tema.

[u]nsigned

#10
Entonces mete el codigo en un array, donde cada 'fragmento' de 8 caracteres sea elemento de dicho array. Y en un bucle comparás los arrays, comparando cada indice de un array con su semejante del otro dado que todos tienen el mismo numero de elementos.

Ejemplo:
Código (php) [Seleccionar]
<?
$a1 = array(40195922, 47449645, 60449218, 52871398, 78398375,11565551, 65489196, 80510253);
$a2 = array(40195922, 28767395, 96896362, 12172546,78398375, 78398375, 17165832, 92326049);

$fragmentos_iguales = 0;
foreach($a1 as $indice=> $valor)
{
if($a2[$indice]==$a1[$indice]) $fragmentos_iguales++;
}
echo $fragmentos_iguales;//en este ejemplo sera 2
?>



Esto le harias dentro dentro del bucle while($row = mysql_fetch_array($result)).

Pero en ese caso $fragmentos_iguales seria un array tambien, donde le subirias a cada elemento $fragmentos_iguales[$row[id]]. Y asi tenés un array con la cantidad de fragmentos iguales para cada campo en la tabla, indexados por el id de dicho registro.

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

Unsigned..luego de decirte éste me pegaras:

Acepto y me gusta tu opinion.. pero.. ese no es mi problema...
Yo analizar el codigo, ya se como hacerlo..

Mi duda era como guardar para luego analizar... o como guardar para que MySQL analice (eso era lo que yo queria)
Pero parece que es imposible que MySQL realice el analisis...
Entonces quedará esa OPCION que NO QUERIA HACER... la cual consistirá en:
Guardar en binario los datos...
Y para comprarlos, TENDRE QUE EXTRAER TOOODAAA LA BASE DE DATOOOSSSSSS.. o sea.. recuperar linea por linea.. y analizarla..

Será un quemadero de CPU GENIAL!!!... :)

[u]nsigned

 :xD :xD si, en eso tienes razon, pero podes ir haciendolo por partes con ajax y algo de lógica  ;)

Saludos.

PD: Recien modifique mi anterior mensaje.

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

Ajax?? o sea.. que "quieres" que haga con Ajax???


Y va otra pregunta:

Si 1 solo codigo php analiza toda la base de datos... será LENTOOO...
Peroo.. y si "ejecuto" varios buscadores al mismo tiempo??? eso se puede hacer???
O sea.. que se realice simultaneamente 2 busquedas.. una desde el principio hasta la mitad, y otra que busque desde la mital hasta el final..
Para ocupar mas CPU...
Que me dicen?? se puede hacer algo asÍ??

[u]nsigned

A ver..primero que nada...

Lo que querés hacer es una herramienta en PHP que solo vos vas a usar en local? o una funcion en una pagina web disponible para 'cualquiera'?

Porque siendo lo primero, podés usar el LIMIT de SQL para ir leyendo de a (por ejemplo) 500 registros.

Pero mi duda es lo que pregnte primero. Estas tratando de hacerte una 'herramienta' con PHP y MySql?
Cita de: Skeletron en  5 Agosto 2009, 01:31 AM
Peroo.. y si "ejecuto" varios buscadores al mismo tiempo??? eso se puede hacer???
O sea.. que se realice simultaneamente 2 busquedas.. una desde el principio hasta la mitad, y otra que busque desde la mital hasta el final..
Para ocupar mas CPU...
Que me dicen?? se puede hacer algo asÍ??

Si se puede 'emulando' multi-hilos(threads). Osea, de poder se puede, pero sera menos rapido aun porque PHP no sorpota este tipo de programación.  :-\

Y por otro lado de cuantos posibles registros estamos hablando? Te recomiendo que probes usando ESTO implementandolo como una funcion. Seteando el timelimit de jecucion a 0 (sin limite) y ver cuanto tarda.


Cita de: Skeletron en  5 Agosto 2009, 01:31 AM
Ajax?? o sea.. que "quieres" que haga con Ajax???

Que hagas una página en php por ejemplo saca_fragmentos_iguales.php.
Que esta página reciba dos parametros(por url) que se le pasaran al LIMIT donde hagas la consulta SQL.
Esta pagina la llames desde otra, la que vera el usuario, pasandole dichos parámetros aumentados en cada nueva llamada. Si supieras AJAX sabrías de lo que te hablo..y es una opcion muy efectiva sin ningún contratiempo.

Lo que haría, básicamente, es ir llamando a un script php que valla sacando los registros de a tramos de por ejemplo 500 registros por vez. Cuando esta pagina termine su trabajo le regresara los resultados a la principal, la que la llamo. y luego la principal la volveria a llamar pero aunmentando los parámetros para el LIMIT asi se tomaria el siguiente bloque de 500 registros de la tabla...y así susecivamente..

Te pondría un ejemplo, pero la verdad que me he olvidado un poco el trabajo con AJAX porque hace meses no lo uso para nada.  :-[

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

#15
Respondo la pregunta:
Será un BUSCADOR.. así como Google ( bueno... me agrandé un poco :xD )..
TOdo el mundo podrá utilizarlo.. y todo el mundo lo utilizará y Google me lo comprará y yo le diré: "No.. se lo voy a regalar a Microsoft" jajaja

VOlviendo al tema:
Tu lo que dices hacer, es "tomar" 500 entradas de la Base de Datos, y al terminar, "tomar" otras 500 mas.. y así..
Claro.. yo tambien digo eso... PERO... el problema no está en tomar entradas.. sino en el analisis que hay que darles..

Supongamos que "ejecuto": analisis1.php y analisis2.php
El 1º toma la primer mitad de la abse de datos y la analiza, y el 2º, toma la 2º mitad y la analiza...
Perooo.. SIMULTANEAMENTE TENDRIA QUE SER TODO ESO!!..
El analisis y toma de datos de la base de datos tiene que ser simultaneo... entiendes?

[u]nsigned

Por eso..la página que toma de SQL te devuelve los resultados ya procesados pasados, por ejemplo, por la función que yo te di. Y hasta podés hacer que sea en XML.

Saludos

PD: Me voy a comer  :xD

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

Pero tio...
a ver..
Pongamos las cosas en claro...

TU dices: "la página que toma de SQL te devuelve los resultados" claro.. porque toma las primer mitad de la base de datos.. analiza y devuelve los valores
PERO... luego tendria que ejecutar el 2º archivo... PEROOO.. así no ganaria tiempo..

Necesito 2 algoritmos de analisis ejecutados al mismo tiempo!!... Y con PHP se puede hacer eso?

Supongamos que en al web incluyo con "include" los 2 archivos: Analisis1.php y analisis 2.php ambos archivos tienen sus "function" donde analizan la abse de datos.

Si yo en la web pongo luego:
analizarprimertamo()
analizarsegundotramo()
lo que hará es analizar el primer tramo, y al terminar, analizará el 2º..

Y yo quiero que se hagan al mismo tiieempooo... y que los 2 vallan devolviendo resutaldos (por echo "EL archivo xxx coincide con el ingresado") mientras van encontrando...

Me entienden o ya estoy loco?

Skeletron

Me acaban de decir algo:

"Si lo que tu quieres es mejorar el tiempo de uso de la CPU ejecutando 2 hilos simultaneos, puedes hacerlo de otra manera: Dandole prioridad de 90% de CPU a APACHE (httpd.exe) y tendrás un rendimiento mejor que abrir 2 hilos"


:O

es verdad eso?

[u]nsigned

Cita de: Skeletron en  5 Agosto 2009, 02:35 AM
Me acaban de decir algo:

"Si lo que tu quieres es mejorar el tiempo de uso de la CPU ejecutando 2 hilos simultaneos, puedes hacerlo de otra manera: Dandole prioridad de 90% de CPU a APACHE (httpd.exe) y tendrás un rendimiento mejor que abrir 2 hilos"


:O

es verdad eso?

Parece lógico, debe ser verdad, puesto que apache tomaria casi todo el micro. Pero salvo que tengas un server propio o dedicado, mejor no te molestes mucho con eso porque los planes 'normales' de hosting no permiten acceder a este tipo de configuraciones del sistema.

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!