2017-05-15 5 views
0

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.

Répondre

0

Pourquoi ne pas tester les deux requêtes? Selon la rapidité de votre base de données, les tests ne devraient pas prendre trop de temps.

+0

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

+0

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