Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2008, 23:23
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: Consulta Lenta.

Yo haría primero varias cosas
pondría un índice a Score de la tabla flash_score. También indexaría, si no es Primary Key sino Foreign Key, el userid de vBulletin_user, que imagino que será campo numérico INT, y luego haría la consulta con INNER JOIN, si es que son PK y FK, y por supuesto no haría nunca una consulta de comparación entre PK y FK con LIKE y tampoco entre campos que son numéricos. No sé el tipo de tablas que tienes, pero prueba esto después de hacer esos índices que te he dicho.
Si relacionas las tablas id_user y userid
SELECT vu.userid, vu.username, fs.score FROM flash_score AS fs INNER JOIN vBulletin_user AS vu ON fs.id_user = vu.userid ORDER BY fs. score DESC LIMIT 0, 100;

y si no son PK y FK también podría usarse esta otra, aunque yo prefiero las relaciones con JOIN
SELECT vu.userid, vu.username, fs.score FROM flash_score AS fs, vBulletin_user AS vu WHERE fs.id_user = vu.userid ORDER BY fs. score DESC LIMIT 0, 100;

vigila además que userid sea INT. Indexa los campos sobre los que hagas búsquedas y ordenaciones frecuentemente (aunque esto último también dependerá de la cardinalidad). Limita la consulta, en lugar de a 100, a 50, si no necesitas ver más de 50, y te aconsejaría alguna otra cosa sobre la estructura de tu base si viéramos las tablas, las relaciones, la naturaleza de los campos, etc., y también qué es lo que quieres sacar de esa base y cómo.

Y tal vez mejore la velocidad... Imagino que la que buscas es la primera que te he puesto.

Última edición por jurena; 08/04/2008 a las 01:17