Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2012, 16:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: problemas con consultas msql

Mira, la consulta es muy directa. No es muy optimizable, ya está optimizada por definición, ya que según dices, el valor que usas para buscar es la PK.
Por otro lado, que sean 5 millones, o 5.000 millones, es medio irrelevante, ya que la PK en este caso es un puntero directo. Yo he realizado busquedas contra más de cien millones de registros, y la consulta sólo dura menos de medio segundo... en una PC de escritorio común.

Hay. sí, un par de cosas que puedes mejorar:

1) Si buscas un valor numérico, no lo pongas entre apóstrofos. Obligas a una conversión implícita, lo que en grandes volúmenes de datos puede ser malo para la performance.
2) A menos que vayas a usar todos los datos sin excepciones, no es bueno hacer un "SELECT *...". Eso hace que MySQL devuelva todo el contenido del registro (incluyendo la PK), y si la longitud es muy grande, es de una pésima performance. Es preferible que indiques exactamente cuáles campos vas a usar.

Un caso especial puede darse por cuestiones de programación: Si la variable llega vacía por accidente, la sintaxis aún es válida, y la base comparará todos los registros del índice contra un espacio vacío... Con lo que puede suceder es que MySQL termine haciendo un full table scan, lo que es un espanto para el servidor.
Asegúrate de que la variable contenga datos, y que esos datos sean numéricos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)