AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Ergebnismenge beschränken mit "LIMIT" oder "TOP"
Thema durchsuchen
Ansicht
Themen-Optionen

Ergebnismenge beschränken mit "LIMIT" oder "TOP"

Ein Thema von Der schöne Günther · begonnen am 19. Feb 2018 · letzter Beitrag vom 22. Feb 2018
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Ergebnismenge beschränken mit "LIMIT" oder "TOP"

  Alt 20. Feb 2018, 19:45
Dafür ist mein SQL nicht gut genug, ich verstehe kein bisschen.
Damit bekommst Du in jeder Rückbadezeile die Anzahl der Gesamtdatensätze als zusätzliche Spalte. Brauchst Du nicht.

Wenn ein count(*) schon zu lange dauert (mit einer entsprechend komplexen Bedingung), dann sind andere Sachen angesagt.

1. SQLite ist verbreitet, aber nicht unbedingt schnell
2. langsames SQL ist gern ein Indikator für unpassende Indizierung
3. aus 1 folgt, dass man vielleicht nach Alternativen schaut, unangenehm, aus 2 folgt: viel angenehmer, weil ggF. mit ein paar Handgriffen erledigt.
4. langsames SQL kann auch an einigen oder wenigen oder vielen "OR" Kriterien in der Bedingung liegen, in dem Fall ergibt es dann oft mehere "Fullscans", besonders schlecht bei großen Datenmengen, Singlepass und mitzählen ist dann schneller (was immer das auch erstmal für Dich bedeutet)
5. das alles ruft nach einem Blick auf den Ausführungsplan der Query
6. Leute, die eine "komplexe Bedingung" nicht zeigen (wollen), haben vielleicht was zu verbergen
7. ein Queryplan liefert immerhin brauchbare Indizien zu 1.-5., ohne all zu viel über Feldnamen usw. zu verraten
8. ein Queryplan kann man leichter "schminken", als eine komplexe Query
9. hier gibt Anleitung zu Query Plan: https://www.sqlite.org/eqp.html

Wenn Du Dich auf die ein oder andere Art mit Deiner komplexen Bedingung hier outest, kann Dir vielleicht geholfen werden.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Ergebnismenge beschränken mit "LIMIT" oder "TOP"

  Alt 20. Feb 2018, 22:26

Damit bekommst Du in jeder Rückbadezeile
Dicke Finger?

6. Leute, die eine "komplexe Bedingung" nicht zeigen (wollen), haben vielleicht was zu verbergen
Hmm, da lehnst Du Dich etwas weit aus dem Fenster. Da kann es vielerlei Gründe geben, von "mit dem Kauderwelsch mach ich mich ja lächerlich" bis zum Verrat von Geschäftsgeheimnissen.

Da der schöne Mann nicht mehr ganz grün hinter den Ohren ist, hat er wohl gute Gründe das Original nicht zu Publizieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Ergebnismenge beschränken mit "LIMIT" oder "TOP"

  Alt 21. Feb 2018, 07:40

Dicke Finger?

6. Leute, die eine "komplexe Bedingung" nicht zeigen (wollen), haben vielleicht was zu verbergen
Hmm, da lehnst Du Dich etwas weit aus dem Fenster. Da kann es vielerlei Gründe geben, von "mit dem Kauderwelsch mach ich mich ja lächerlich" bis zum Verrat von Geschäftsgeheimnissen.

Da der schöne Mann nicht mehr ganz grün hinter den Ohren ist, hat er wohl gute Gründe das Original nicht zu Publizieren.
Ja, die Gicht ..., aber "Rückbaden" ist Althochdeutsch für "Ausbaden" und das müssen wir ja hier wohl alle mal ...


Ja und ich lehn mich natürlich nicht aus dem Fenster, lediglich meine Gedanken scheinen so dick zu sein wie meine Finger.
Ich wollte nur eine Brücke bauen, auch wenn es niemand aufgefallen ist. Ob Scham oder Firmengeheimnis, es ist normal, dass gewisse Dinge nicht in einem Forum gepostet werden.
Das kann natürlich jeder halten wie er will, die Sache mit dem Explain Plan war gewisser maßen eine Alternative dazu.

Letztlich muss man in gewisser Weise "Klartext" reden. Wenn "komplexe Bedingung" ral für 20 x OR steht, kann man sich wahrscheinlich alle möglichen Tricks in die Haare schmieren. Explain wäre erst mal gut für etwas Klarheit.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Ergebnismenge beschränken mit "LIMIT" oder "TOP"

  Alt 21. Feb 2018, 08:48
Ja und ich lehn mich natürlich nicht aus dem Fenster, lediglich meine Gedanken scheinen so dick zu sein wie meine Finger.
Nö soo dick nu auch wieder nicht. Ich kann mich allerdings noch gut erinnern, was für ein Aufwand/Eiertanz es war eine morsche Abfrage so zu formulieren, daß das wichtige rüber kam und trotzdem keine Rückschlüsse auf die verwendete Datenbank möglich war. Und um die Ohren gehauen zu bekommen, daß eine Tabelle suboptimal angelegt wurde ist auch nicht sooo erheiternd.

@Der schöne Günther
Wenn Du Millionen von Datensätzen erwarten kannst, ist es legitim sich auf die ersten hundert zu beschränken um etwas "Datengeschmack" zu bekommen. Sag mal um was es dir hier wirklich geht, bzw. warum Du die Einschränkung benötigst.
z.B. Die ersten Hundert holen um dem Benutzer Acion zu geben und dann den Rest hinterher, würde ich anders lösen.

Gruß
k-H

P.S.
Die Vorschläge von Jobo solltest Du Dir wirklich zu Herzen nehmen.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 13:13 Uhr.
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-2025 by Thomas Breitkreuz