Seite 1 von 1

Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:21
von Manfred
der ADS Server kann ja grundsätzlich mit den normalen Xbase++ Funktionen angesprochen werden wie aber auch per SQL.
Wenn ich den ADS per SQL anspreche, dann benötigt man kein USE usw.
wenn man den ADS nun mit DBF und CDX im DD nutzt, aber nur SQL nimmt als Abfrage, werden denn dann überhaupt die CDX benötigt?

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:31
von UliTs
Nein, aber sie werden zur Optimierung genutzt!

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:33
von Manfred
zu welcher Optimierung? Und woher weiß der ADS welchen TAG er gerade nehmen sollte

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:34
von georg
Guten Morgen, Manfred -


grundsätzlich sollte es einen Unterschied machen. Ein SQL-Server hat normalerweise so etwas wie einen Query-Optimizer. Der prüft bei einer Abfrage, welche Index-Dateien zur Verfügung stehen, und ob diese für die Abfrage herangezogen werden können. Gibt es keinen passenden Index, wird temporär einer erstellt.

Wenn Du also weisst, dass bestimmte Sortierfolgen häufig verwendet werden, kann ein Index über diese Sortierfolgen dem Query-Optimizer helfen.

Grundsätzlich gesprochen. Ob das aktuell auch für den ADS gilt, kann ich nicht beantworten, ich vermute es aber.

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:54
von UliTs
Am Besten, Du rufst das Select Statement mit dem Arc auf und schaust, welche Indizes benutzt werden.

Grundsätzlich sollte man dafür einfache Indizes über je genau 1 Feld haben.

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 9:56
von Manfred
Uli, kannst Du mir näheres dazu erklären, ich bin total neu auf dem Gebiet ADS und versuche mich gerade ein wenig einzuarbeiten.

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 11:10
von UliTs
Ja,habe gerade noch etwas zu tun. Danach rufe ich Dich an.

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 13:15
von UliTs
Habe Dich nicht erreicht...
Melde Dich einfach, sobald es passt.
Uli

Re: Grundsatzfrage

Verfasst: Sa, 16. Mai 2020 13:33
von Manfred
war kurz draußen, jetzt bin ich da.

Re: Grundsatzfrage

Verfasst: Mo, 18. Mai 2020 12:41
von nightcrawler
Der "Tag" ist dem ADS egal, er kennt aber die Ausdrücke dahinter.
Kommt zB nun eine Abfrage

Code: Alles auswählen

SELECT Vorname, Name FROM mitarbeiter ORDER BY Name, Vorname
und Du hast einen Index "Name+Vorname", so kann ADS diesen zur Abfrage-Optimierung verwenden.
Bei

Code: Alles auswählen

SELECT m.Vorname, m.Name, p.Gehalt FROM mitarbeiter m LEFT OUTER JOIN personaldaten p ON p.PersNo=m.PersNo
würde der ADS jeden Index in mitarbeiter und in personaldaten verwenden können, welcher mit "PersNo" beginnt (zB auch "PersNo+DTOS(Eintritt)).
Am Besten sind hier Index-Ausdrücke auf den einzelnen Feldern, dann kann der ADS die einzelnen Schlüssel sauber kombinieren - und zwar in jedwelcher Reihenfolge (auch DESC).

Re: Grundsatzfrage

Verfasst: Mo, 18. Mai 2020 13:41
von UliTs
Manfred hat geschrieben: Sa, 16. Mai 2020 13:33 war kurz draußen, jetzt bin ich da.
Sorry, ich weiß nicht warum, aber ich wurde über Deine Antwort nicht informiert...
Habe wahrscheinlich erst Donnerstag wieder Zeit. Melde Dich dann bitte gegebenenfalls noch einmal.

Uli

Re: Grundsatzfrage

Verfasst: Sa, 23. Mai 2020 11:09
von Manfred
nächste Grundsatzfrage:
wenn eine DBF über xbase++ geöffnet wurde/ist, dann kann sie parallel nicht mit einem SQL Befehl angesprochen werden!? Also entweder oder?

Re: Grundsatzfrage

Verfasst: Sa, 23. Mai 2020 11:30
von UliTs
Ich weiß nicht genau, wie Du das meinst. Die Tabellen sollten grundsätzlich nur über den ADS geöffnet werden. Das kann natürlich auch mit xBase über den ADS geschehen. Parallel kannst du auch mit SQL Statements auf die Tabellen zugreifen.

Re: Grundsatzfrage

Verfasst: Sa, 23. Mai 2020 11:49
von Manfred
im selben Programm war gemeint. Ich habe eine DBF mit USE aufgemacht und dann versucht über einen SQL Befehl ein Update abzuschicken. Dabei bekomme ich eine Fehlermeldung.
ads.PNG
ads.PNG (43 KiB) 6184 mal betrachtet
allerdings stelle ich gerade fest, das die auch kommt, wenn die DBF vorher zugemacht wurde.
Den Update Befehl habe ich über den Architekten geprüft, der ist in Ordnung.

Re: Grundsatzfrage

Verfasst: Sa, 23. Mai 2020 20:20
von brandelh
Ich sehe hier die Fehlermeldung, dass die Methode qOut nicht erlaubt ist, das erinnert mich an ein ? wenn vorher console off geschaltet wurde.
Die NICHT erstellte Datei scheint auch nicht die DBF zu sein oder ?

Re: Grundsatzfrage

Verfasst: Sa, 23. Mai 2020 20:52
von Manfred
hm, der Fehler scheint wohl nichts damit zu tun zu haben. Ich habe ihn aber trotzdem mal hier stehen lassen. Ich habe total übersehen, das ich in dem Programm zwar schon eine Connection zum ADS Server habe, hatte aber total vergessen, das ich bisher nur Postgres SQL Befehle verschickt hatte. Also muß ich jetzt erstmal prüfen, ob überhaupt ein SQL Befehl an den ADS rausgeht. Das mache ich aber erst morgen.