Ilość relacji a wydajność

0

Mam dwie tabelki, w jednej będzie powyżej 10MLN rekordów a w drugiej powyżej 1MLD.
Przekładając to na świat obiektowy jest tak że jeden z tych obiektów posiada kolekcję innych. Tak naprawdę nigdy lub prawie nigdy nie używam tej relacji, ale sensownym jest połączyć te dwie tabele relacją jeden do wielu i na pewno bym tak zrobił gdyby nie ich rozmiary. Bardzo często robię selecty na tych tabelach. Zastanawiam się czy połączenie ich relację nie spowoduje spadku wydajności w selectach? a może w insertach? Jak to jest?

Dodam że chciałbym je połączyć żeby mieć pewność że nie będzie w bazie błędów. Nie może być tak że jeden obiekt nie należy do żadnego obiektu nadrzędnego np. Czyli ustawił bym IdObiektuNadrzednego na pole not nullable.

0

Są dwie tabele, jedna niech będzie tblMLN, druga tblMLD. Jak rozumiem tabela tblMLN ma pole id, tabela tblMLD ma pole id_tblMLN i to łączy dwie tabele. Co chcesz jeszcze tworzyć? Złączenie tabel, jeśli będzie konieczne, zrobisz w select.

0

Rozpiszę to lepiej:

  • Tabela Obiekt
    • Zawiera Id
  • Tabela ElementObiektu
    • Zawiera Id
    • Zawiera IdObiektu

IdObiektu wskazuje na Id z tabeli Obiekt czyli definiuje połączenie jeden do wielu. Obiekty składają się z ElementówObiektu.

Teraz pytanie czy robić normalne powiązanie czyli klucz obcy itd. pomiędzy tymi tabelami czy nie robić? Jak to wpłynie na wydajność selectów na Obiekt i ElementObiekt. Dodam że prawie nigdy nie będę robił selectów używających IdObiektu czyli tej relacji. Będę je robił tylko w celach testowych i wtedy na wydajności mi nie zależy.

Więc pytanie, czy z taką relacją zwykły select po Id np traci na wydajności?

0

FK nie mają żadnego wpływu na selecty. FK gwarantują spójność danych, a sprawdza się ją na poziomie insertów i update'ów.
Zresztą co przeszkadza Ci sprawdzić to na planie zapytania?

0
it konstruktor napisał(a):

Rozpiszę to lepiej:
(..)

Teraz pytanie czy robić normalne powiązanie czyli klucz obcy itd. pomiędzy tymi tabelami czy nie robić? Jak to wpłynie na wydajność selectów na Obiekt i ElementObiekt. (..)
Więc pytanie, czy z taką relacją zwykły select po Id np traci na wydajności?

Klucz obcy przy select nie powinien mieć żadnego znaczenia, jeśli chodzi o wydajność.

1 użytkowników online, w tym zalogowanych: 0, gości: 1