Foros del Web » Programando para Internet » PHP »

alguien puede ayudarme??

Estas en el tema de alguien puede ayudarme?? en el foro de PHP en Foros del Web. Hola a todos. Resulta que tengo una base de datos en mysql con datos de librerias: libreros, libros,... La tabla libros tiene más de 100.000 ...
  #1 (permalink)  
Antiguo 27/02/2007, 02:23
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 0
alguien puede ayudarme??

Hola a todos.

Resulta que tengo una base de datos en mysql con datos de librerias: libreros, libros,... La tabla libros tiene más de 100.000 registros.

He hecho un buscador en php, que permite buscar libros por una clave, con lo que genera la sql siguiente:

SELECT titulo, autor, libros.descripcion, precio, libreria, foto, nombre, libros.id as aaa, tipo, librerias.id as bbb FROM libros, librerias WHERE (libreria=librerias.Id)AND (titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') AND( titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') LIMIT 0,10

Y luego con varios botones radio puedo ordenar el resultado por: autor, titulo, fecha,....

Todas las ordenaciones funcionan perfectamente pero cuando ordeno por título me da el siguiente error:

Mysql dijo: Out of sort memory. Increase daemon sort buffer size

Curiosamente el campo título es el más grande por el que puedo ordenar (no sé si tendrá algo que ver).

LLamé a los que gestionan mi servidor mysql (mis proveedores de internet) y les dije de aumentar lo que es el buffer de consultas y me dicen que por razones de agilidad no lo pueden aumentar y me dan 2 soluciones: o que reestructure la base de datos o que haga cambios a nivel de programación web, pero no se me ocurre como hacer que esto funcione.

Por favor, alguien puede ayudarme??

Os lo agradezco mucho de antemano.

Un saludo
  #2 (permalink)  
Antiguo 27/02/2007, 05:22
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Re: alguien puede ayudarme??

pone el codigo SQL a ver ke se peude ahcer.
salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #3 (permalink)  
Antiguo 27/02/2007, 05:32
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 0
Re: alguien puede ayudarme??

Hola aldo1982.

La sql es esta:

SELECT titulo, autor, libros.descripcion, precio, libreria, foto, nombre, libros.id as aaa, tipo, librerias.id as bbb FROM libros, librerias WHERE (libreria=librerias.Id)AND (titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') AND( titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') order by titulo LIMIT 0,10

Muchas gracias por tu interés.

Un saludo
  #4 (permalink)  
Antiguo 27/02/2007, 05:52
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Re: alguien puede ayudarme??

hola prueba asi

SELECT titulo, autor, libros.descripcion, precio, libreria, foto, nombre, libros.id as aaa, tipo, librerias.id as bbb FROM libros, librerias WHERE (libreria=librerias.Id)AND (titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') AND( titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%') order by titulo ASC LIMIT 0,10

para ke usas el limit en 0,10 ?
salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #5 (permalink)  
Antiguo 27/02/2007, 06:06
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 0
Re: alguien puede ayudarme??

lo utilizo para que saque 10 registros ya que hago una paginación de 10 en 10 libros.

He probado lo del ASC y me sigue sin funcionar. Se te ocurre alguna otra cosa para probar??

Muchas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 27/02/2007, 06:16
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Re: alguien puede ayudarme??

dime que error te tira...te tira algun error ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #7 (permalink)  
Antiguo 27/02/2007, 06:23
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 0
Re: alguien puede ayudarme??

me da este error:

Out of sort memory. Increase daemon sort buffer size

que se puede arreglar aumentando el buffer del servidor, pero mis proveedores de servicios dicen que no lo pueden aumentar que o bien cambie la estructura de la base de datos o bien cambie la programación con lo que me dejan un poco sin saber que hacer.
  #8 (permalink)  
Antiguo 27/02/2007, 15:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: alguien puede ayudarme??

¿Tienes indexado el campo TITULO de tu base de datos?

Por otro lado, ¿porqué repites dos veces el mismo AND?
[AND (titulo like '%cervantes%' OR autor like '%cervantes%' OR libros.descripcion like '%cervantes%' OR precio like '%cervantes%')]

...y ¿porqué preguntas por [precio like '%cervantes%']. Esto yo lo eliminaría si no accedes por precio (con un precio coherente, claro).

¿Descripción y autor están también indexados? Si no lo están, indéxalos también y prueba a ver qué tal.

Saludos.
  #9 (permalink)  
Antiguo 28/02/2007, 02:32
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 0
Re: alguien puede ayudarme??

Hola chiquitinto.

En primer lugar muchas gracias por tu interés.

En efecto, duplicaba dos veces las mismas condiciones en el where. Eso ya lo he arreglado. He indexado el campo titulo, descripcion y autor y me sigue saliendo lo mismo.

He reparado y optimizado la tabla y me da el mismo error.

Voy a probar vaciar la cache de la tabla (flush) a ver si así consigo algo, aunque tendré que hablar con mi proveedor de servicios a para que me de permisos o lo haga el, ya que no tengo permisos para hacerlo.

En fin si se te ocurre cualquier otra cosa te lo agradecería mucho.

Muchas gracias por todo.
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 07:05.