AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Millionen Datensätze SELECT per Index
Thema durchsuchen
Ansicht
Themen-Optionen

Millionen Datensätze SELECT per Index

Ein Thema von Gruber_Hans_12345 · begonnen am 26. Okt 2014 · letzter Beitrag vom 26. Okt 2014
 
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Millionen Datensätze SELECT per Index

  Alt 26. Okt 2014, 09:24
Überlege Dir einfach mal, wie Du die Datensätze schnell finden kannst und wie nicht.
Drei Index jeweils über eines der drei Felder wird zu folgendem Suchalgorithmus führen:
1. Suche den nächsten Eintrag mit der ID (durch den Index das geht sehr schnell).
2. Lade den Record
3. Prüfe, ob START und ENDE passen (einen anderen Index zu verwenden bringt ja nichts, denn der Record ist ja in #2 schon ausgewählt)
4. Wenn START und ENDE passen, kopiere den Record in die Ergebnismenge
5. GOTO 1

Je nach Statistik kann es sein, das die Felder getauscht werden, d.h. in #1 könnte auch ein Record mit passendem START-Wert gesucht werden und anschließend auf ID und ENDE abgefragt.

Bei kombinierten Abfragen wirst Du auch kombinierte Indexe nehmen müssen. Da Du jedoch nicht auf Eindeutigkeit prüfst, kannst Du höchstens 2 Felder kombinieren. Rein theoretisch bringt auch ein Index über drei Werte etwas, aber hier scheint FB nicht schlau genug zu sein. Der Geschwindigkeitsvorteil wäre der, das z.B. sehr schnell ein Record mit passender ID und passendem START-Wert gefunden wird und für die Prüfung, ob ENDE passt, der Record nicht extra geladen werden muss.

Wenn Du deine Überlegung auf die gesamte Datenmenge ausweitest, könnte man 'sofort' alle Kandidaten mit passender ID aus dem Index herauslesen. Weil alle Kandidaten im ID-Index ja direkt nebeneinander liegen.

Auch bei einem kombinierten Index über ID und START (oder ENDE) liegen alle Kandidaten mit passender ID und START direkt nebeneinander und daher geht das sehr schnell. Bei einem kombinierten Index über START und ENDE wirst Du das so nicht finden. Dieser Index bringt nur bei einer Abfrage auf START=<Zeit> etwas.

Bei deiner Abfrage ist es nicht möglich, einen Index zu verwenden, der alle drei Felder kombiniert, weil die Kandidaten ja niemals direkt nebeneinander liegen.
  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 10:08 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