Hola Gabriel,
me parece que un punto super importantes es que revises los indices en cada una de las tablas que usas ...
Esta fue una pregunta para el ingreso a la maestria que no se porque en los cursos de BD no las discuten ...
Ejemplo:
tengo una tabla factura y una tabla de detalle factura.
Resulta obvio que la table detalle tenga una llave foranea llamada id_factura.
Aqui esta el detalle pues ser llave foranea significa que en la otra table esta indexado (hay estructuras de datos de busqueda de informacion de forma rapida)
Pero ser una llave foranea en la tabla detalle NO SIGNIFICA automaticamente que este indexada para busquedas por este campo en la tabla detalle ...
Imagina la consulta: recuperar todos los registros de la tabla detalles de una factura de id_factura=100. Si la tabla detalle no tiene un indice para ese campo pues la busqueda sera lenta simplemente y como las tablas de detalles suelen ser numerosas pues el triempo de respuesta ira aumentando gradualmente.
Otro detalle es: que tipo de indice se requiere para ese campo en la tabla detalle?
Sirve un indice Hash si quieres busquedas muy directas sobre un ID-
Si haces busquedas por intervalos pues no se usa Hash ... se usa un BTree.
Ademas si quieres que los detalles de una misma factira esten fisicamente proximos requieres un indice clusterizado ...
Y asi vamos afinando las tablas ... yo normalmente parto de la funcionalidad que requieres para luego en funcion de esos casos ir a ver como se arma la consulta y sabiendo en que sentido viene la informacion (de factuira a detalle o de detalle a factura) uno analiza si las tablas estan preparadas para sopòrtar consultas en gran escala ...
Como veras no es un tema de BD solamente ... es un tema de estructuras de datos,
Tambien esta en medio temas de costo computacional de cada estructura que se estudia en un curso de analisis y diseño de algoritmos ...
Tambien hay un tema de concurrencia si piensas que multiples usuarios van a accesar a tus indices ...
Eso es lo que hacemos en ciencia de la computacion y que la gente (cuando no esta informada) dice: "son cosas teoricas"
Saludos y buena suerte ...
er