En supposant que j'ai 2 grandes tables avec plus de 10 millions de rangées dans chaque table.Large Mysql Join
Le Tableau 1 est une table Movie avec un ID utilisateur indiquant que l'utilisateur a vu ce film, et le Tableau 2 est un tableau de Musique avec un ID utilisateur indiquant le troupeau utilisateur de cette chanson. Ce que je veux faire est de pouvoir lancer une requête quand l'utilisateur veut savoir s'il y a un morceau avec le même nom qu'un film qu'il a vu.
Par exemple.
SELECT movies.name FROM movies, music WHERE movies.name = music.name and movies.userID = '8a80828c2b46d717012b4801d2650002';
J'ai indexé le nom du film et le nom de la musique dans les deux tableaux. Le problème est que lorsque l'utilisateur appelle la requête, il semble que ce serait lent en fonction du nombre de lignes présentes dans les tables et du nombre de films/musiques que l'utilisateur a regardé.
Supposons que l'utilisateur a regardé 9000 films et 90k chansons. Comment pourrais-je optimiser cette requête pour qu'elle soit rapide (moins de 15 secondes maximum)?
EDIT: Serait-il logique pour moi d'utiliser Triggers après chaque film regardé pour vérifier s'il y a un morceau qui existe et mettre à jour une troisième table avec userID, movieID, musicID? Le volume élevé d'insertions dans la base de données entraînerait-il un ralentissement des déclencheurs, ce qui à son tour affecterait les performances de la base de données? Pourquoi ne pas créer un index sur le film userid?
Hey Benoit, merci pour la réponse rapide. Comment ajouter un index sur l'aide de film userID? –
Les index sont utiles pour filtrer les lignes d'une table. Ici vous filtrez la table MOVIE sur le contenu de la colonne UserID. – Benoit