Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz suchen, mit SQL Integrität prüfen (https://www.delphipraxis.net/67986-datensatz-suchen-mit-sql-integritaet-pruefen.html)

Hansa 23. Apr 2006 19:48

Re: Datensatz suchen, mit SQL Integrität prüfen
 
Zitat:

Zitat von Jelly
...Mir brauchst Du das nicht sagen. Aber so "laienhaft" die Frage vom Threadersteller gestellt war (nicht bös gemeint), wollt ich nur darauf hinweisen, dass deine Methode nicht zwangsläufig in jedem Fall passt.

Die Problematik ist alles andere als laienhaft ! Allerdings mit sehr einfachen Mitteln zu bewältigen. Die Methode paßt schon, es sein denn es werden keinerlei Regeln betreffend Datenintegrität eingehalten, e.g. nicht eindeutige IDs. Siehe hier :

Zitat:

Zitat von Jelly
Deine Frage hat nix mit Integritätsprüfung zu tun... Aber um einen Datensatz auf Existenz zu prüfen, mach ich immer so:

SQL-Code:
select count(id) as N from Tabelle where id = 123
Steht nachher in N = 0, so gibts den Datensatz net.

Alterativ kannst Du natürlich auch.. können viel zu viele Datensätze übermittelt werden, was ja für die reine Existenzfrage irrelevant ist... Deshalb ist erstere Abfrage auf jeden Fall vorzuziehen.

Mit meinem Parameter :vorhanden mache ich ja noch einiges mehr. Z.B. lasse ich die DB entscheiden, ob ein Insert oder Update gemacht wird. Bei -1 Insert usw. Ich kann mir einzelne Felder rauspicken und direkt beim Insert vorbesetzen oder noch ganz andere Dinge machen. Du wirst auch von jedem anständigen Programmierer hören, wo es nur geht, SPs zu verwenden. Das hier ist ein Paradebeispiel dafür.

Es fehlt übrigens noch eine Antwort auf diese Frage :

Zitat:

Zitat von Hansa
@Jelly : erkläre mir mal wie Du folgendes löst : x Rechnungen haben eine bestimmte Artikelposition. Genau díe Art.Nr. dieses Artikels muß geändert werden. Was passiert mit den Rechnungen ? Die sollen nämlich mit der neuen Art.Nr. wieder neu gedruckt werden.

Ach ja, fehlt auch noch. Ich mache das so : die Art.Nr. wird eben geändert. :mrgreen:

ils566 23. Apr 2006 21:11

Re: Datensatz suchen, mit SQL Integrität prüfen
 
@all

danke für die rege Beteiligung. Es freut mich, dass die Fragestellung grünlich analysiert wird und verschiedene Lösungsansätze diskutiert werden.

In meinem Fall ist die Id eineindeutig und als PRIMARY key definiert.

Was uns alle interessieren dürfte, ist die Frage ob der 'Count' auf dem Server oder dem Client läuft. Bei einem Btree+ indizierten Feld würde die Suche nach ein paar wenigen Zugriffen durchgeführt sein und höchstens die Indexdaten (für die Suche auf dem Client) über das Netzwerk transportiert werden.

Performant ist es aus meiner Sicht, wenn der SQL-Server genau ein Byte zurückgibt: 0 oder 1. Das heißt, im Idealfall läuft die Suche über den Index auf dem Server, da dort die Indexdaten i.d.R. sowieso im Cache stehen und die Suche mit "~Lichtgeschwindigkeit" erfolgt. In dem Fall würde netto nur 1 Byte (true oder false) übers Netz transportiert werden.

Somit ergeben sich 2 Fragen:
1. Wieviel Traffic löst der Count aus, wieviel die StoredProcedure?
2. Gibt es eine Möglichkeit zu messen, wieviel Traffic eine SQL-Abfrage tatsächlich auslöst?

grüße
ils


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz