Hola a todos. Tengo una bbdd montada en sql 2000 con ultimo sp y fix.
Estoy corriendo una serie de consultas que me gustaria saber si se pueden
optimizar. Son las siguientes:
Buscamos el usuario del que sabemos su id, email o telefono
select * from usuarios where ((".strlen($id).">0 and
usuarios.id='".sql_quote($id)."') or (".strlen($email).">0 and
usuarios.email='".sql_quote($email)."') or (".strlen($telf).">0 and
(usuarios.telefono1='".sql_quote($telf)."' or
usuarios.telefono2='".sql_quote($telf)."')))
Si existe, mantenemos los datos en $row_user y buscamos todos los usuarios
que tienen algún dato de contacto en común con él
select * from usuarios where 1=2 or (".strlen($row_user["email"]).">0 and
usuarios.email='".sql_quote($row_user["email"])."') or
(".strlen($row_user["telefono1"]).">0 and
(usuarios.telefono1='".sql_quote($row_user["telefono1"])."' or
usuarios.telefono2='".sql_quote($row_user["telefono1"])."')) or
(".strlen($row_user["telefono2"]).">0 and
(usuarios.telefono1='".sql_quote($row_user["telefono2"])."' or
usuarios.telefono2='".sql_quote($row_user["telefono2"])."'))
Guardamos todos los usuarios resultantes en una variable y buscamos todos
los proyectos cuyo campo usuario_id está contenido en esa variable
select distinct proyectos.id as proyectos_id, proyectos.titulo as titulo,
proyectos.cuerpo as cuerpo, proyectos.tipo, proyectos.fecha, usuarios.id as
usuario_id from proyectos, usuarios where proyectos.usuario_id=usuarios.id
and usuarios.id in ".$array_users." order by fecha,titulo
Las consultas funcionan bien y bastante rapidas con pocos registros pero me
gustaria contemplar la posibilidad de optimizarlas para un futuro
crecimiento de dichas tablas.
Gracias por vuestra ayuda.
Leer las respuestas