Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/08/2013, 10:35
gamau6
 
Fecha de Ingreso: octubre-2010
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: mysql muy lento

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código MySQL:
Ver original
  1. mysql> EXPLAIN SELECT * FROM texto WHERE texto = 'hola' LIMIT 1;
  2. +----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
  3. | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |
  4. +----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
  5. |  1 | SIMPLE      | texto   | ALL  | NULL        | NULL | NULL    | NULL | 2300356 | USING WHERE |
  6. +----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
  7. 1 row IN SET (0,00 sec)
Esto me dice dos cosas: Por un lado, que estás haciendo un FULL TABLE SCAN, lo que resulta espantoso. Eso ocurre porque no existen índices definidos sobre el campo, por lo que debe leer la tabla entera para luego aplicar el WHERE.
Eso resulta muy ineficiente.
Como ya te remarcaron, conviene que generes un INDEX sobre ese campo, pero siendo un TEXT eso puede tener algunas complicaciones, ya que si los textos son demasiado extensos, deberás segmentar la clave del índice creado.
Por otro lado, si las búsquedas son por proximidad, conviene hacerlo con indices FULLTEXT, que son mejores para eso, pero con el inconveniente que sólo se admiten en tablas de tipo MyISAM, y si estás usando InnoDB, no se podrá. Eso a menos que separes el campo en otra tabla, relacionándolo por medio de una FK programada (ya que las MyISAM no tienen FK).

En definitiva, se puede mejorar la performance, usando diversas aproximaciones al problema, más allá de convenir usar un hardware mejor. Pero no te podemos dar consejos avanzados sin conocer mejor el contexto de tu sistema, el tipo de consultas que usas, los datos y la estructura de la base.
Nos falta demasiada info para poder dar un buen diagnóstico.
Respecto a las consultas en si con servidores limitados, es bastante variable. Yo he hecho consultas eficientes con tablas de decenas de millones de registros y más de 1 Gb de peso, usando una notebook con 6 Gb de RAM y sin mayores retrasos. Y también he tenido problemas con consultas de apenas algunos cientos de miles de registros...
Muchas veces se resuelve con mejores consultas e índices. Pero necesitamos saber más para decirlo con certeza.

Gracias por responder.
Solo 2 usuarios realizan consultas a la base de datos, no se puede utilizar indices ya que se tiene que hacer por condiciones al campo texto que es de tipo text, se podria cambiar a un varchar mas pequeño si influye en tiempo de respuesta.
No indique que el motor es innoDB.
__________________
..