Qui a le plus d'impact sur les performances de la base de données?Quel est l'impact de la base de données: Interroger une table avec un filtre sur deux colonnes ou une table avec deux fois les enregistrements avec un filtre sur une seule colonne?
Interroger une table courte (disons 20 millions de disques) avec filtre sur deux colonnes
ou
l'interrogation d'une longue table deux fois plus d'enregistrements que la table courte avec filtre sur un colonne?
Pour donner un peu de contexte:
Je simple non dirigé, graphe connexe sur les personnes et leurs relations avec d'autres amis/personnes. L'utilisateur final de BI souhaite rechercher une "personne", puis utiliser la table de faits pour identifier tous les contacts/amis associés.
Je construis une table de faits (Star Schema) pour sauvegarder les informations du graphique. Le grain de ma table de faits est une relation unique à un degré (relation directe), supportée par la dimension Date et une personne. La personne d'intérêt peut être dans la colonne Node_1_person ou Node_2_Person.
Tableau Définitions:
RELATIONSHIP FACT TABLE (~40 Million Rows)
Relationship_ID
Node_1_person
Node_2_Person
Relationship_Strength_Score
Relationship_Counter
Relationship_Created_Date
Person_Dimension (~20 Million Rows)
Person_Surrogate_Key
Person_Natural_key
Person_Name
Person_Address
Person_Email
J'ai deux options pour faciliter l'exigence:
Option 1: Je sauverai l'inverse de la relation, de sorte que l'utilisateur final puisse rechercher un colonne pour trouver la relation.
Option 2: J'évite les relations réciproques, puis l'utilisateur final doit regarder à la fois dans la colonne Node_1_person et Node_2_Person.
Je ne suis pas sûr, quelle option aura plus d'impact sur les performances de la base de données.
Malheureusement, je n'ai pas accès aux environnements DB. Puisque j'ai à la fois l'option n ° 1 (réciproque) et l'option n ° 2 (non réciproque), j'ai besoin de connaître les avantages et les inconvénients en ce qui concerne les performances des requêtes, pour justifier le modèle et ma décision. – user2600421
Mais j'imagine que vous avez accès et coopérez avec des gens qui le font. Pourquoi ne pas préparer 2 requêtes et configurer un test? Soyons raisonnables, si vous ne pouvez pas tester, vous ne pouvez pas être blâmé pour les problèmes de performance non plus. – wasted