ben tu va avoir une table catégorie de film avec comme clef primaire le numéro de la catégorie de film avec pour valeurCitation:
J'aimerais bien que tu m'expliques quelle est selon toi la différence fondamentale entre l'utilisation des index dans une clause WHERE et dans des jointures
1
2
3
et une table film avec le numéro de film et chaque film appartient à une catégorie de film (donc une clef étrangère nommé "numéro catégorie film" sera ajouté dans la table film. Les valeurs dans la table film pour le champ numéro de film et numéro catégorie film pourraient être :
N° de film 1 et comme catégorie de film 1
N° de film 2 et comme catégorie de film 1
N° de film 3 et comme catégorie de film 1
N° de film 4 et comme catégorie de film 1
N° de film 5 et comme catégorie de film 2
N° de film 6 et comme catégorie de film 2
N° de film 7 et comme catégorie de film 1
si tu créer un index sur catégorie de film et le numéro de film en même temps le SBGD te créera un index de ce type (je pense car je n'ai pas étudié les index sous MySQL) :
Num catégorie | Num Film
1 | 1
1 | 2
1 | 3
1 | 4
1 | 7
2 | 5
2 | 6
en faisant une jointure entre catégorie et film tu évitera au SBGD de : rechercher quels sont les films qui appartiennent à chaque catégorie et de trier les résultats car ce travail est déja fait dans l'index. Le SBGD n'aura alors qu'à séléctionner les valeurs dans l'index sans avoir à trier ou balayer dans tous les sens ce qui est donc plus rapide en cas de sélection avec des jointures mais sera plus lent lors des insertions ou modification qui touchent à une valeur de l'index car l'index devra alors être modifié.
Ou bien encore imagine qu'on veut uniquement les films dont la catégorie d'appartenance est égal à 1 : le SBGD n'aura qu'à parcourir l'index jusque la catégorie soit différente de 1 (vu que l'index est trié) pour arrêter le balayage de l'index ce qui est bien plus rapide que de balayer séquentiellement toutes les valeurs du champ catégorie de film de la table film à la recherche d'un film avec pour catégorie de film le numéro 1 !
Voilà