AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SELECT FIRST 1 im JOIN möglich ?

SELECT FIRST 1 im JOIN möglich ?

Ein Thema von MyRealName · begonnen am 14. Sep 2017 · letzter Beitrag vom 14. Nov 2017
Antwort Antwort
jobo

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

AW: SELECT FIRST 1 im JOIN möglich ?

  Alt 12. Nov 2017, 10:58
Es ist sowieso fraglich, ob das so schneller ist.
Wenn das Mengenverhältnis 750K:1K ist, dann ist das ursprüngliche Subselect gar nicht so dramatisch. Bei wirksamer Indexierung, sind es halt 1000 gezielte Zugriff aus der 750K Menge.
Meine Variante macht riesige Aggregationen wahrscheinlich sogar Fulltablescan, die eigentlich nur einseitig über das Datum eingeschränkt sind.

Angenommen, man untersucht die Menge und stellt das größte Datumsloch fest, könnte man das sicher auch als berechnete Untergrenze (fecha-größteLücke) in das Statement einbauen.

Gemäß der Frage des TE ist mein Vorschlag erstmal eine ziemlich allgemeingültige Lösung per Join. Dürfte überall laufen.
Ggf. hilft die CTE Nummer doch, das wäre quasi eine Lateral Variante.
MyRealName soll mal ausprobieren, wie das läuft.

Jeden Tag einen Mittelwert einzutragen, macht die 750K sicher auch nicht schlanker, dann spart man sich die Aggregierung, aber braucht "etwas" mehr Platz für die Daten und Indizierung.
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: SELECT FIRST 1 im JOIN möglich ?

  Alt 12. Nov 2017, 16:23
Jeden Tag einen Mittelwert einzutragen, macht die 750K sicher auch nicht schlanker, dann spart man sich die Aggregierung, aber braucht "etwas" mehr Platz für die Daten und Indizierung.
Eben drum, meiner Meinung nach kommt es auf die Häufigkeit der Abfrage an. Läuft sie jeden oder jeden zweiten Tag sollte man den Platz spendieren, wird die Frage nur jeden Monat gestellt, darf sie auch etwas Zeit Kosten.

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

Registriert seit: 19. Okt 2003
Ort: Heilbronn
699 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SELECT FIRST 1 im JOIN möglich ?

  Alt 14. Nov 2017, 13:45
Jeden Tag einen Mittelwert einzutragen, macht die 750K sicher auch nicht schlanker, dann spart man sich die Aggregierung, aber braucht "etwas" mehr Platz für die Daten und Indizierung.
Eben drum, meiner Meinung nach kommt es auf die Häufigkeit der Abfrage an. Läuft sie jeden oder jeden zweiten Tag sollte man den Platz spendieren, wird die Frage nur jeden Monat gestellt, darf sie auch etwas Zeit Kosten.

Gruß
K-H
Ich habe hier eine Kundentabelle eine Firma welche Airlines in Bogota das Essen für die Flüge zubereitet. Die kaufen produkte nur 2-4x pro Monat und manchmal ändert sich der Preis das ganze Jahr nicht, deswegen macht eine Tabelle wue CP_Fecha (CP_Durchschnittspreis, Fecha=Datum) sinn, da es
1. eine kleinere Tabelle ist als die Bewegungstablle (ItemAct), also weniger Felder und ich habe das gefühl, dass FB da schenller abfragt
2. halt doch sehr viel weniger Register drin stehen und es sich schneller sucht.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:48 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