Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Vistas o tabla temporal

Estas en el tema de Vistas o tabla temporal en el foro de Mysql en Foros del Web. Hola Amigos foreros, les comento, ya tenia el tema un poco traspapelado, pero ahora lo estoy viendo nuevamente. Hace un tiempo estuve haciendo algunas preguntas, ...
  #1 (permalink)  
Antiguo 14/01/2008, 10:36
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Vistas o tabla temporal

Hola Amigos foreros, les comento, ya tenia el tema un poco traspapelado, pero ahora lo estoy viendo nuevamente.
Hace un tiempo estuve haciendo algunas preguntas, ya que tengo una BD de 10 M de registros y estoy haciendo busquedas con FULL TEXT SEARCH, claro la teoria se rompe en la practica y resulta que haciendo una busqueda por score, el sistema se rompe, es decir, si busco JUAN PEREZ se podran imaginar cuantos resultados son, y pues si hago una ordenacion por score de JUAN PEREZ se muere en la busqueda, asi es que decidi en su momento trabajar el resultado del select original

Código:
SELECT a.hunter_fecha_ingreso,a.hunter_nombre,a.hunter_fecha_nacimiento,a.sexo_id,a.estado_civil_id,a.hunter_direccion,a.hunter_telefono,a.hunter_telefono2,b.patrono_nombre,a.hunter_salario,b.patrono_direccion,b.patrono_telefono,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia,a.hunter_nombre_referencia,a.hunter_telefono_referencia,a.hunter_direccion_referencia,c.departamento_nombre,d.municipio_nombre FROM hunters a, patronos b,departamentos c, municipios d WHERE MATCH (a.hunter_nombre,a.hunter_direccion,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia) AGAINST ('$texto_buscar') and a.patrono_id = b.patrono_id and a.departamento_id=c.departamento_id and a.municipio_id=d.municipio_id limit
en una tabla temporal, y luego hacer el orden x score de esa tabla a ver si obtenia mejores resultados, ya no tuve tiempo de hacerlo y nuevamente estoy viendo el tema, y pues como uso mysql 5 pense en que talvez podria utilizar vistas, pero que es mejor en mi caso?
Mientras alguien tiene la bondad de contestar en base a su experiencia, me pondre a googlear, asi que ojala alguien pueda ayudarme.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #2 (permalink)  
Antiguo 14/01/2008, 10:50
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

aqui esta el thread anterior

http://www.forosdelweb.com/f86/full-...-mucho-537160/
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 14/01/2008, 11:03
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

Este es el resultado del EXPLAIN

Código:
id, select type, table, type, posible_keys, key, key_len, ref, rows, extra
1, 'SIMPLE', 'a', 'fulltext', 'todos', 'todos', '0', '', 1, 'Using where'
1, 'SIMPLE', 'd', 'eq_ref', 'PRIMARY', 'PRIMARY', '4', 'hunter.a.municipio_id', 1, ''
1, 'SIMPLE', 'b', 'eq_ref', 'PRIMARY', 'PRIMARY', '4', 'hunter.a.patrono_id', 1, ''
1, 'SIMPLE', 'c', 'eq_ref', 'PRIMARY', 'PRIMARY', '4', 'hunter.a.departamento_id', 1, ''
creo que no se leera bien
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #4 (permalink)  
Antiguo 14/01/2008, 11:26
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

parentesis
Otra cosa rara es que cuando ejecuto ese mismo script con INNER JOIN se tarda muchisimo mas....
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #5 (permalink)  
Antiguo 14/01/2008, 14:00
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Vistas o tabla temporal

- Podrías poner cuánto se tarda la query con el select que estás haciendo?
- Prueba una cosa, si solo haces el select con la tabla hunter (sobre la que haces el match), ves alguna diferencia apreciable en performance (pon el tiempo)
  #6 (permalink)  
Antiguo 14/01/2008, 16:13
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

mira el SELECT sin la ordenacion por score o puntuacion son 1 o 2 segs. en dar respuesta pero tambien le pongo un limit 0,50 sino se me muere.
Ahora bien cuando lo hago ordenado por puntuacion, te dire que nunca he dejado que termine, porque ya ha pasado mas de 1 hora sin resultado alguno :(
Y hoy al medio dia hasta casi me mata al server que tiene 2 GB de Memoria dual core, etc etc no es un mal server pues.
Ya estoy desesperado porque la busqueda de informacion no es muy exacta y no ordena.


Cita:
Iniciado por pragone Ver Mensaje
- Podrías poner cuánto se tarda la query con el select que estás haciendo?
- Prueba una cosa, si solo haces el select con la tabla hunter (sobre la que haces el match), ves alguna diferencia apreciable en performance (pon el tiempo)
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #7 (permalink)  
Antiguo 14/01/2008, 16:19
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

con este query se tarda fraccion de segundos en dar respuesta

Código:
 
SELECT a.hunter_fecha_ingreso,a.hunter_nombre,a.hunter_fecha_nacimiento,a.sexo_id,a.estado_civil_id,a.hunter_direccion,a.hunter_telefono,a.hunter_telefono2,b.patrono_nombre,a.hunter_salario,b.patrono_direccion,b.patrono_telefono,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia,a.hunter_nombre_referencia,a.hunter_telefono_referencia,a.hunter_direccion_referencia,c.departamento_nombre,d.municipio_nombre FROM hunters a INNER JOIN patronos b ON (a.patrono_id=b.patrono_id) INNER JOIN departamentos c ON (a.departamento_id=c.departamento_id) INNER JOIN  municipios d ON (a.municipio_id=d.municipio_id) WHERE MATCH (a.hunter_nombre,a.hunter_direccion,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia) AGAINST ('$texto_buscar') limit 0,50

pero con este

Código:
  
SELECT a.hunter_fecha_ingreso,a.hunter_nombre,a.hunter_fecha_nacimiento,a.sexo_id,
a.estado_civil_id,a.hunter_direccion,a.hunter_telefono,a.hunter_telefono2,
b.patrono_nombre,a.hunter_salario,b.patrono_direccion,b.patrono_telefono,
a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia,
a.hunter_nombre_referencia,a.hunter_telefono_referencia,
a.hunter_direccion_referencia,c.departamento_nombre,d.municipio_nombre,
(MATCH (a.hunter_nombre,a.hunter_direccion,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia) AGAINST ('$texto_buscar') ) as puntuacion 
FROM hunters a INNER JOIN patronos b ON (a.patrono_id=b.patrono_id) INNER JOIN departamentos c ON (a.departamento_id=c.departamento_id) INNER JOIN  municipios d ON (a.municipio_id=d.municipio_id) WHERE MATCH (a.hunter_nombre,a.hunter_direccion,a.hunter_isss,a.hunter_dui,a.hunter_nit,a.hunter_licencia) AGAINST ('$texto_buscar')  ORDER BY puntuacion
con este codigo se me muere y pues haciendo el respectivo EXPLAIN me da a entender que ese ORDER BY es el que lo esta matando.... a ver si alguien puede ayudarme
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #8 (permalink)  
Antiguo 14/01/2008, 16:24
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

probe el ultimo eliminandole el ORDER BY puntuacion, y la respuesta es en fracciones de segundo, es decir comprobadisimo que el ORDER BY me esta matando el query, que sugerencias me dan?
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #9 (permalink)  
Antiguo 15/01/2008, 07:44
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Vistas o tabla temporal

xcars, una pregunta?

- Cuando le quitas el order by puntuación en qué orden te los retorna? Me parece que igualmente cuando la query usa un índice fulltext el orden es por relevancia.

- Cuántos resultados esperas de la query? menos de 50?, menos de 100? menos de 500? más de 1000?

- Supongo que una alternativa es que crees una tabla temporal con los resultados sin ordenar (en caso de que no esté en el orden que deseas) y luego lances un SELECT sobre la tabla temporal.
  #10 (permalink)  
Antiguo 15/01/2008, 08:37
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: Vistas o tabla temporal

Cita:
Iniciado por pragone Ver Mensaje
xcars, una pregunta?

- Cuando le quitas el order by puntuación en qué orden te los retorna? Me parece que igualmente cuando la query usa un índice fulltext el orden es por relevancia.

- Cuántos resultados esperas de la query? menos de 50?, menos de 100? menos de 500? más de 1000?

- Supongo que una alternativa es que crees una tabla temporal con los resultados sin ordenar (en caso de que no esté en el orden que deseas) y luego lances un SELECT sobre la tabla temporal.

pues fijate que eso note, imprimi la puntuacion y lo revise, y efectivamente el primero es el que tiene mas puntuacion, asi es que creo que mi problema real lo resolvere con un order by. para ser mas ordenado, abrire un nuevo thread para leer opiniones de lo que me sucede
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
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:20.