| |||
php , Mysql consultas cual sera la mejor manera para evitar que una pagina se cuelge cuando hago una consulta a una tabla que tiene muchos datos... la base esta es MySql... que hacer con datos viejitos o como optimizar estas consultas |
| |||
Vale Tío, un consejo es que procures optimizar las tablas con algun tipo de indice, ya que en mi casa antes las consultas me colgaban el sistema cada vez que las hacia, por lo que implemente un Mysql DBMS freeware y optimice las mismas y chachan!! problema resulto. Al menos que haya otra cosa que no sepa...de pronto esa sea tu solución. Descárgalo de: www.dbtools.com.br |
| |||
Pero .. cuando haces esa "consulta" .. con que objetivo la haces?.. para presentar esos registros a tu usuario del sisitema? ... Si es así .. existen técnicas de "paginado" para sólo mostrar un grupo de registros que .. son al fin y al cabo los que va a ver el usuario y .. si quiere ver mas .. ya irá avanzando en las páginas del resultado. Sobre optimizar las consultas SQL que uses .. para eso deberías aportar el código que actualmente usas y ahí se podría ver de como poder optimiza algo más si corresponde tu código (tanto PHP como SQL empleado). (si vas hacer eso .. indica la estructura de tus tablas de tu BD implicadas). Un saludo, |
| |||
a ver la base ya esta casi toda indexada eso fue lo primero que hice ... pero nada... las consultas son para presentar reportes por ejemplo de las compras de un año con todos sus productos es necesario jalar datos de dos tabla y hay veces en donde las consultas son de mas de dos hasta tres cuatro tablas de datos de mucho tiempo muchos datos... hay es donde se vuelven lentas las consultas... |
| |||
Bueno .. pues en ese caso tendrás que repasar tu modelo de datos .... Expon lo que tienes: tus BD .. las relaciones entre tus tablas .. los campos que están indexados .. de que tipo son: estructura de tu BD y ejemplos de consultas SQL que ejecutas .. En principio no es lo mismo usar "JOIN's" para trabajar con várias tablas que hacer un "WHERE tabla1.campo_clave=tabla1.campo_clave" eso .. como para empezar .. Y a todo esto asumiendo que estés haciendo consultas relacionadas ..por qué si usas consultas "básicas" y las "anidas" para obtener las subconsultas con "PHP" ahí ya baja el rendimiento muchoooooooo!. Luego hay otros procesos que muchas veces se solventa con PHP al trabajar con BD .. ejemplo: campos tipo "flag" con un 1 -> significa tal cosa y así debe presentar un dato en tus listados .. 0 -> significa otra cosa y así debe presentar otro dato ... Eso se suele resolver con un "if()" en PHP .. pero hay que recordar que Mysql tambien puede usar estructuras de control (IF .. Switch .. etc) entre otras cosas que no tal vez no se suela pensar que en "SQL" se puede resolver y si se puede. A lo que quiero llegar es que .. cuanto más SQL se use (y optimizado este ...) mejor irán tus aplicaciones. Un saludo, |
| |||
Ademas, si tienes muchos indices tambien eso hace lentas las consultas, tienes q analizar bien a q campos le pones indices. Y si, es mejor q utilices JOIN para generar las consultas y trata de evitar los productos cartesianos para hecer las queries |