Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi "OR" im SelectStatement (https://www.delphipraxis.net/173258-im-selectstatement.html)

vit4l 14. Feb 2013 11:56

Datenbank: MS SQL • Version: 2008 • Zugriff über: ADO

"OR" im SelectStatement
 
Hallo zusammen.
Ich habe einen Select mit Join und dort mehrer "OR" Abfragen. Meine Frage ist, ob die Performance (Geschwindigkeit) der Abfrage an dem "OR" leidet. Meine gehört zu haben mit "AND" ist es kein Problem, aber "OR" verlangsamt das Ganze sehr, weil dadurch eben mehrere Vergleiche ausgeführt werden müssen. Liege ich richtig und wenn was gibt es für Möglichkeit das zu umgehen?

Sir Rufo 14. Feb 2013 12:11

AW: "OR" im SelectStatement
 
Kein
Delphi-Quellcode:
OR
verwenden?

Wenn ich mit dem Auto von Hamburg nach München fahre, dann belastet das die Umwelt. Mit dem Fahrrad wird die Umwelt nicht belastet.

Wenn ich heute noch in München ankommen will, dann ist das Fahrrad aber so was von raus ;)

mkinzler 14. Feb 2013 12:17

AW: "OR" im SelectStatement
 
In der Joinbedingung oder im where?
Alternative Bedingungen oder alternative Werte? Im 2. Fall könnte man es mit IN versuchen.

p80286 14. Feb 2013 12:26

AW: "OR" im SelectStatement
 
Bei einer eingeschränkten Menge von werten könnte man ja auch
Code:
...
and not(Bedingung1)
and not(Bedingung2)
and not(Bedingung3)
...
Verwenden.

Das
Code:
in(...)
hat manchmal Performanceprobleme (meine Erfahrung), ist aber eigentlich vorzuziehen.

Gruß
K-H

jobo 14. Feb 2013 13:01

AW: "OR" im SelectStatement
 
Was machen denn die "or"?
Bilden sie maßgeblich die Ergebnismenge z.B: 80% aus 10Mio records? Oder gibt es separate Kriterien, die für eine starke Einschränkung sorgen?
Der erste Fall wäre unangenehm, der 2. kann vernachlässigt werden.
Gibt es harte Kriterien, die über indizierte Spalten eine Menge von z.B. 1000 records liefert, spielen danach ein paar "or" keine Rolle. Manchmal muss man der DB für solch ein Vorgehen etwas Hilfestellung geben.

Furtbichler 14. Feb 2013 16:25

AW: "OR" im SelectStatement
 
Ein 'OR' kann auch ein Indiz für optimierungsbedürftiges Design sein.

Zitat:

Zitat von Sir Rufo (Beitrag 1203498)
Wenn ich mit dem Auto von Hamburg nach München fahre, dann belastet das die Umwelt. Mit dem Fahrrad wird die Umwelt nicht belastet.
Wenn ich heute noch in München ankommen will, dann ist das Fahrrad aber so was von raus ;)

Mir fehlt der Bezug zum 'OR'.

p80286 14. Feb 2013 16:59

AW: "OR" im SelectStatement
 
Code:
where name='Schmitz'
  and (wohnort='Köln' or wohnort='Düsseldorf')
das halte ich für ein typisches 'OR' wie sollte da das Design geändert werden?

Gruß
K-H

Furtbichler 14. Feb 2013 17:55

AW: "OR" im SelectStatement
 
Das sollte kein Problem sein, sofern Name und Wohnort mit einem Index versehen sind.

Sir Rufo 14. Feb 2013 19:55

AW: "OR" im SelectStatement
 
Zitat:

Zitat von vit4l (Beitrag 1203493)
Meine Frage ist, ob die Performance (Geschwindigkeit) der Abfrage an dem "OR" leidet. Meine gehört zu haben mit "AND" ist es kein Problem, aber "OR" verlangsamt das Ganze sehr, weil dadurch eben mehrere Vergleiche ausgeführt werden müssen.

Zitat:

Zitat von Furtbichler (Beitrag 1203563)
Zitat:

Zitat von Sir Rufo (Beitrag 1203498)
Wenn ich mit dem Auto von Hamburg nach München fahre, dann belastet das die Umwelt. Mit dem Fahrrad wird die Umwelt nicht belastet.
Wenn ich heute noch in München ankommen will, dann ist das Fahrrad aber so was von raus ;)

Mir fehlt der Bezug zum 'OR'.

Da ist der Bezug ;)

jobo 14. Feb 2013 19:59

AW: "OR" im SelectStatement
 
Zitat:

Zitat von Furtbichler (Beitrag 1203563)
Ein 'OR' kann auch ein Indiz für optimierungsbedürftiges Design sein.

AND genauso


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Seite 1 von 2  1 2      

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