Título: Consulta de multiples tablas de mysql Publicado por: soy_nicanor en 10 Abril 2015, 03:09 am Tengo varias tablas.
Estoy sacando con JOIN Pero me busca muy lento los datos. Código
Necesito otra forma de consultar para que sea rápido la consulta. Título: Re: Consulta de multiples tablas de mysql Publicado por: Usuario Invitado en 10 Abril 2015, 04:45 am Hola. Éste tema debe ir en bases de datos. Cualquier cosa que tenga que ver con SQL o NoSQL, debe ir allí. Por favor, revisa bien el ámbito de tu problema para elegir la categoría correcta.
¿Cuántos registros tienes en la BBDD? Título: Re: Consulta de multiples tablas de mysql Publicado por: fran800m en 16 Abril 2015, 21:17 pm Una select a 7 tablas te tiene que tardar, de todas formas yo trabajo con tablas de 66 millones de registros en MySql y estando indizado tarda relativamente poco.
Prueba a crear índices en los campos donde unes las tablas y para medicamento.medicamento ¿Por qué haces ese concat? ¿Y ese group by???? Título: Re: Consulta de multiples tablas de mysql Publicado por: Hadess_inf en 24 Abril 2015, 18:39 pm Usa explain analice para ver como trabaja tu consulta, después podrías crear indices donde corresponde.
Saludos. Título: Re: Consulta de multiples tablas de mysql Publicado por: ZeroVzla en 17 Mayo 2015, 06:28 am Hola,
También puedes usar with que te permite tener especificar tablas temporales con ciertas condiciones de búsqueda antes de enlazar con las demás. Pasarías de enlazar 10 filas de tabla A con otras 10 filas de tabla B (suponiendo que ambas tablas tienen 10 filas)... a enlazar 5 filas de la tabla A que cumplen cierta condición con 3 filas de la tabla B que también cumplen otras condiciones. Por ejemplo: Código
Obtenido de https://msdn.microsoft.com/es-ve/library/ms175972.aspx (https://msdn.microsoft.com/es-ve/library/ms175972.aspx). De igual manera y como lo indican en las respuestas anteriores los índices, usados correctamente, son de extrema importancia en las base de datos con grandes cantidades de registros. Busca cuáles son las condiciones de búsqueda que siempre usas y crea un índice de ellas. Por otra parte veo que usas concat y no concatenas nada en realidad eso te resta velocidad ya que llevas a cabo la operación sobre cada registro sin necesidad y además de ello tienes el uso del LIKE que también trabaja bastante lento. Te recomiendo algo, si en verdad tienes que concatenar, por ejemplo concat(medicamento.medicamento, medicamento.casilla) y ésa búsqueda es sumamente repetitiva o puesto de otra manera se lleva a cabo muchas, muchas veces... entonces puedes crear un índice de la misma, así el manejador no tiene que llevar a cabo la instrucción "concat(medicamento.medicamento, medicamento.casilla)" sobre todas las filas cada vez que alguien genere ésa consulta sino que se va al índice y ya. Otra recomendación (se me ocurrió pero no se que tan buena es) es crear un select en el que encuentres primero el producto, en éste caso la medicina, y luego llevas a cabo varios subselects, se me ocurre que de ésta manera no enlazas tantas tablas y puede generarse más rápido la salida, algo como: Código
De ésta manera, creeeeeo, el manejador llevará a cabo la consulta principal (el select con la condición where) y luego llevará a cabo las subconsultas para buscar las demás columnas. Espero te sirva. |