Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fremdschlüssel mit ID oder Varchar als Index was ist besser? (https://www.delphipraxis.net/130093-fremdschluessel-mit-id-oder-varchar-als-index-ist-besser.html)

zack0r 3. Mär 2009 11:20

Datenbank: DBISAM • Version: 4 • Zugriff über: Direkt

Fremdschlüssel mit ID oder Varchar als Index was ist besser?
 
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

mquadrat 3. Mär 2009 11:24

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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.

zack0r 3. Mär 2009 11:32

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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

mquadrat 3. Mär 2009 11:33

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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?

zack0r 3. Mär 2009 11:37

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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.

ULIK 3. Mär 2009 14:40

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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

zack0r 3. Mär 2009 17:22

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
Hi,
hmm wusste garnich das es sowas gibt.
Gibts das denn als Freeware? Google findet auf die schnelle nichts.

zack0r

ULIK 3. Mär 2009 18:21

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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

hoika 4. Mär 2009 13:11

Re: Fremdschlüssel mit ID oder Varchar als Index was ist bes
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 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