AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Select-Tuning

Ein Thema von nachti1505 · begonnen am 3. Mai 2011 · letzter Beitrag vom 3. Mai 2011
 
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#1

Select-Tuning

  Alt 3. Mai 2011, 19:15
Datenbank: Firebird • Version: 2.5 • Zugriff über: FIBPlus
Hallo,

ich habe eine Tabelle mit ca. 100.000 Personen. Jede Person gehört nun noch zu einer bestimmten Gruppe (Referentiell Key).


Eine stored procedure liefert mir nun aus der Tabelle eine Menge von Personen, für die bestimmte Eigenschaften gelten (Alter, Wohnort, etc.) und liefert als Rückgabewert außerdem die Gruppe, in welcher diese Person ist.

Zusätzlich möchte ich nun noch als boni angeben, wieviel Personen grundsätzlich aus dieser Gruppe gefiltert wurden.

Beispiel (Personen sind alle 25 Jahre alt)

Name:Maier, Alter:25, Gruppe:7, Anzahl:3 (heißt, es befinden sich insgesamt 3 Personen auf dieser Liste, die in Gruppe 7 sind)
Name:Müller, Alter:25, Gruppe:1, Anzahl:1
Name:Edel, Alter:25, Gruppe:7, Anzahl:3
Name:Stark, Alter:25, Gruppe:7, Anzahl:3

Code:
  for select vv_id,
             vv_name,
             vv_alter,
             ...
             vv_gruppe
  from vv_personas where vv_alter = 25 and vv_xyz is null and vv_abc is null
  into :vv_id,
       :vv_name,
       :vv_alter,
       :...
       :gruppe
  do begin
    select count(vv_id) from vv_personas where vv_alter = 25 and vv_xyz is null and vv_abc is null
                             and vv_gruppe = :vv_gruppe into :vv_gruppencount;
    suspend;
  end
Auf das originäre Suchkriterium (vv_alter, vv_xyz, vv_abc) ist ein Index gesetzt, so dass hier ca. 400 indizierte reads ausgeführt werden. Durch das select(count) in der inneren Schleife werden nun je gefundenem Datensatz nochmal ca. 400 indizierte reads ausgeführt --> macht 20.000 reads.

Ich frage mich jetzt, ob man die originäre Liste (200 matched personas) irgendwie buffern kann, um das select count effizienter zu machen?
  Mit Zitat antworten Zitat
 


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 02:19 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