Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/06/2012, 15:04
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: condicionales en un query

Cita:
Editado: Como otras veces se me adelantó el compañero gnzsoloyo con la respuesta jejeje, saludos
Hola cariberecord:

El error "java heap space" puede ser ocasionado por varios motivos, no necesarimanete por una consulta ineficiente, aunque si hay varios detalles que podrías ajustar en tu consulta:

1. Las condiciones LIKE son muy tardadas y además, al hacer esto

Código:
ReMovil like '%' and RePuntoControl like '%'
en realidad no estás filtrando nada, podrías eliminar estas dos condiciones y obtener el mismo resultado:

2. Puedes cambiar las condiciones OR por una sola condición IN:

Código:
ReMotivo in ('101', '103', '257', '256', '10')
NOTA, si tus campos SON NUMÉRICOS entonces no hay necesidad de ponerlos entre comillas, ya que de esta manera se tiene que realizar una conversión implícita:

Código:
ReMotivo in (101, 103, 257, 256, 10)
3. Mucho ojo cuando utilices los operadores >= y <= CON CADENAS, ya que pueden tener un comportamiento distinto a los numéricos (al utilizar cadenas lo hace de manera alfabética, no por el valor nominal).

(ReDistancia >= 0 and ReDistancia < 1.5)

4. Si no tienes creados índices, CREALOS. si tienes creados INDICES revisa que sean todos los necesarios para la consulta.

5. Ejecuta la consulta directamente desde la consola de MySQL y no desde tu programa o página y ejecútala con la opción EXPLAIN

http://dev.mysql.com/doc/refman/5.0/es/explain.html

De esta manera podrás darte cuenta si tienes algún otro punto por mejorar.

6. Revisa que efectivamente necesites un LEFT JOIN o si puedes utilizar un INNER JOIN, recordando cómo se comportan cada uno de ellos.

Saludos
Leo.