AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fremdschlüssel mit ID oder Varchar als Index was ist besser?
Thema durchsuchen
Ansicht
Themen-Optionen

Fremdschlüssel mit ID oder Varchar als Index was ist besser?

Ein Thema von zack0r · begonnen am 3. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#1

Fremdschlüssel mit ID oder Varchar als Index was ist besser?

  Alt 3. Mär 2009, 12:20
Datenbank: DBISAM • Version: 4 • Zugriff über: Direkt
Hallo,

meine Frage ist folgendes:
Ich hab in meiner Datenbank viele Tabellen der Form:

ID Oberflaeche
1 blank
2 gewalzt
3 geschliffen
...

Und dann habe ich eine Tabelle (artikel) die quasi aus vielen dieser einzelnen Tabellen die Werte zusammensucht. Das sind insgesamt 6 Tabellen.
Jetzt frage ich mich ob es nicht klüger wäre anstatt in der Haupttabelle nur die IDs zu speichern und dann bei jeder Abfrage wieder 6 Tabellen abfragen zu müssen, einfach die IDs wegzulassen, den Varchar als Primärschlüssel setze und dafür immer direkt auf die Daten zugreifen zu können.

Also es bräuchte wahrscheinlich etwas mehr Speicherplatz aber es sollte doch auf jeden fall mehr Performance bringen oder?

Danke für Meinungen

Gruß zack0r
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 12:24
varchar is ne ganz schlechte Idee. Wenn jetzt jemand statt "gewalzt" "gewalzt (warm u. kalt)" in der Ausgabe haben will, musst du alle deine Datensätze ändern.

Fremdschlüsselverknüpfung ist da schon das Richtige. Sollte mit passenden Indizes auch recht flott gehen. Probleme könnte es allerdings geben, wenn du noch mehr Zusatztabellen bekommst. IMHO haben einige Datenbanken ein Limit, wieviele Tabellen man in eine Query packen kann.
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#3

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 12:32
Hi danke für die schnelle Antwort.
Naja ich hab im Moment auch die Möglichkeit z.B. wie im dem Fall neue Oberflächen hinzuzufügen. Aus dieser Tabelle heraus kann man ja abgleichen ob die Datensätze identisch sind (Primärschlüssel). Dann kann ich ja auch einfach ne Funktion einbauen die ein Update macht falls jemand einen Eintrag ändern sollte.
Aber das ist glaub ich auch in dem Fall nicht das Problem.
Das Programm läuft halt Netzwerkbasiert auf mehreren Rechnern und ist zu Langsam und ich glaube irgendwie das das an den Joins liegt...

zack0r
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 12:33
Ganz ohne Joins wird es sicherlich schneller sein als mit. Muss man halt abwägen zwischen Geschwindigkeit und Wartbarkeit. Wie lange braucht die Query denn?
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#5

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 12:37
Kann ich nicht sagen weil die Abfragen dank DBIsam in den Code verstrickt sind. Das DBMS ist leider Dbisam 4. Ich würde lieber auf ein richtiges wie MySQL oder so umsteigen aber da bin ich noch nicht zu gekommen.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 15:40
Hm,

so lahm ist DBISAM jetzt nun auch nicht. Wie groß sind denn deine Tabellen? Ach ja, hast Du denn schon mal mit einem Profiler geschaut, wo Du die Zeit verbrätst?

Gruß,
Uli
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#7

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 18:22
Hi,
hmm wusste garnich das es sowas gibt.
Gibts das denn als Freeware? Google findet auf die schnelle nichts.

zack0r
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 3. Mär 2009, 19:21
Na, die wirklich guten kosten schon Geld:

AQTime, ProDelphi

Freeware kenn ich grad keinen. Aber zurück zum Problem: wie groß sind die Tabellen und dann würd ich mir wirklich mal die Query extrahieren und in den DBISAM Tools separat laufen lassen. Dann siehst Du ja schon, ob es wirklich die Queries sind.


Grüße,
Uli
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes

  Alt 4. Mär 2009, 14:11
Hallo,

bei joins ist auch die Frage, ob auch alle Felder indiziert sind
(ein Fremdschlüssel reicht manchmal nicht)..

Wie sieht die Query denn aus.

Falsch: Select *
Falsch: kein sinnvolles Where
Falsch: Virenscanner lokal oder auf dem Server
bei dem das Datenverzeichnis mit geprüft wird


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz