AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Alphanumerische Werte eingrenzen (ähnlich Between)
Thema durchsuchen
Ansicht
Themen-Optionen

Alphanumerische Werte eingrenzen (ähnlich Between)

Ein Thema von blawen · begonnen am 13. Sep 2015 · letzter Beitrag vom 14. Sep 2015
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

AW: Alphanumerische Werte eingrenzen (ähnlich Between)

  Alt 14. Sep 2015, 17:51
Intuitiv hätte ich gemeint, dass so eine Abfrage effizienter abgearbeitet werden kann, wenn einige Bedingungen, die viele Datensätze ausscheiden, schon im join festgelegt werden, weil dann die Ergebnismenge des joins kleiner ist? Was ist daran falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Alphanumerische Werte eingrenzen (ähnlich Between)

  Alt 14. Sep 2015, 18:47
Intuitiv hätte ich gemeint, dass so eine Abfrage effizienter abgearbeitet werden kann, wenn einige Bedingungen, die viele Datensätze ausscheiden, schon im join festgelegt werden, weil dann die Ergebnismenge des joins kleiner ist? Was ist daran falsch?
Daran ist erst einmal gar nichts falsch.

Ob das aber wirklich effizienter abgearbeitet wird und wenn, bei welcher Datenmenge und welcher Datenstruktur, hängt sehr stark vom DBMS und dem Optimizer ab.

Man kann pauschal da gar nichts sagen, nur ein konkreter Test kann hier die letztendliche Erkenntnis bringen.

Manchmal gibt es auch recht konkrete Aussagen zu einem konkreten DBMS
https://www.percona.com/blog/2010/04...oin-and-where/

Oder sowas http://stackoverflow.com/questions/1...r-than-a-where

(Ich suche noch einen Link zu einer Seite, auf der unterschiedliche Performance-Tests mit einem MS-SQL Server gemacht wurden, und dort gab es teilweise unterschiedliche Laufzeitverhalten abhänging von der Satzanzahl. Der scheint sich im Moment aber gut zu verstecken)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Sep 2015 um 18:58 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: Alphanumerische Werte eingrenzen (ähnlich Between)

  Alt 14. Sep 2015, 20:07
(Ich suche noch einen Link zu einer Seite, auf der unterschiedliche Performance-Tests mit einem MS-SQL Server gemacht wurden, und dort gab es teilweise unterschiedliche Laufzeitverhalten abhänging von der Satzanzahl. Der scheint sich im Moment aber gut zu verstecken)
Sag Bescheid, wenn Du ihn gefunden hast

Zitat:
Ob das aber wirklich effizienter abgearbeitet wird und wenn, bei welcher Datenmenge und welcher Datenstruktur, hängt sehr stark vom DBMS und dem Optimizer ab.
Genau! Und an der Stelle erledigt sich eigentlich jede Fragestellung, die nicht exakt an einem System (Hersteller) einer Version (plus Hardware, Cache Größen, Partitionierung etc. pp) entlang läuft .

Ich hab im Rahmen dieses Threads ein paar Sachen auf Oracle ausprobiert. Ein Feld 80 % mit NULL "gefüllt", mit Index, 9 Mio Datensätze. Sucht man nach einem Wert, dessen Häufigkeit deutlich unter 1% ist, wird der Index verwendet, der nächste Wert liegt bei ca 4% Häufigkeit, da wird dann schon Fulltablescan gemacht. Ich bin überrascht.

Das Problem an Threads wie diesen ist, dass immer wieder bestimmte Regeln für richtig erklärt werden, es aber einfach nicht sind, im schlimmsten Fall nicht mal im Besonderen. Thematisch ein Legendenklassiker. Aktuelle Systeme haben sehr pfiffige Optimizer, denen häufig eine Menge Blödsinn und eine Menge KI angedichtet wird.

Deswegen (auch falls ich mich wiederhole)
Prio 1: Fachlich solide Abfrage schreiben und auf den Optimizer vertrauen.
Prio 2: Doku
Prio 3: Tuning, falls nötig, dann aber besonders gut dokumentieren, warum man so komische Abfragen schreibt/ Indizes erstellt/ ..
Gruß, Jo
  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 23:43 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