AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird SELECT IN sehr langsam?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird SELECT IN sehr langsam?

Ein Thema von Gruber_Hans_12345 · begonnen am 30. Jun 2008 · letzter Beitrag vom 1. Jul 2008
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:10
Datenbank: Firebird • Version: 2.1 • Zugriff über: Console
Also, ich habe in meinem Code diese SQL Abfrage drinnen, und (fragt mich nicht seit wann) diese ist sehr sehr langsam geworden

SELECT * FROM PERSONAL WHERE ID IN (SELECT PARENTID FROM KOSTEN WHERE PARENTID = 46 GROUP BY PARENTID) wenn ich statt dessen teste mit
SELECT * FROM PERSONAL WHERE ID IN (46) dann gehts in 0 sekunden
und auch die
SELECT PARENTID FROM KOSTEN WHERE PARENTID = 46 GROUP BY PARENTID liefert sofort die richtigen ergebnisse zurück, nur wenn ich die zwei verkette, dann passts nicht mehr - da sprechen wir dann von zeiten zwischen 4 bis 13 sekunden

muß ich da irgendwo noch auf irgendwas aufpassen?, hat sich da bei Firebird >= 2.0 wo was geändert?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:17
Hallo,

ja Subselects sind ab 2.0 irgendwie "nicht mehr so schnell"
Da ist wohl was am Optimizer verschlimmbessert worden.

Das SELECT PARENTID FROM KOSTEN WHERE PARENTID = 46 GROUP BY PARENTI
wird für jedes Id aus Personal aufgerufen (was das Group By hier soll, ist mir schleierhaft)

Ich ersetze solche Sachen meist durch ein left outer join
mit Is Null or Is Not Null.

Das ist unter FB1.5 und FB2.1 gleich schnell.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:18
Existiert ein Index auf dem Feld KOSTEN.PARENTID?
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:19
Zitat von hoika:
Hallo,

ja Subselects sind ab 2.0 irgendwie "nicht mehr so schnell"
Da ist wohl was am Optimizer verschlimmbessert worden.

Ich ersetze solche Sachen meist durch ein left outer join
mit Is Null or Is Not Null.

Das ist unter FB1.5 und FB2.1 gleich schnell.


Heiko
das ist aber großer bullshit ... ich brauche solche Sub Select auch für DELETE's, und da gehen ja meines wissen keine JOIN's ... und leider dauern solche Löschaktionen dann so lange, das man das ganze Abbrehcen muß ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:26
Hallo #,

Ja,
du kannst das ja mal als Bug melden ...

oder auf FB2.5 warten,
vielleicht es ja dann ja behoben.

Bin auch reingefallen,
benutze aber noch 1.5 als Default und die 2.X
zusätzlich als Test.


Heiko
Heiko
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:28
Zitat von mkinzler:
Existiert ein Index auf dem Feld KOSTEN.PARENTID?
ja gibt index für alle,

mir kommts aber so vor wie wenn er keinen INDEX für den Primäre SChlüssel bei Personal verwendet da steht dann PLAN NATURAL

gib ichs dann manuell an mit PLAN (PERSONAL INDEX (PERSONAL_ID))
dann sagt er, er kann da keinen INDEX verwenden ...

@hoika
Das GROUP BY war drinnen, da ich orginal ein anderes Feld, mit anderen WHERE rausgeholt habe, und da sind dann 6000 Datensätze, mit immer den selben Werten rausgekomme, deshalb dann das GROUP BY ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Firebird SELECT IN sehr langsam?

  Alt 30. Jun 2008, 15:41
Hallo,

das natural kann schon stimmen.
Er muss ja alle Id's durchlaufen (du hast kein Where oder Order by Personal.Id drin),
da braucht man keinen Index (sagt der Optimizer hier).

Zum Group By

Select Distinct() nehmen.


Vielleicht liegt es ja gerade daran ?



Heiko
Heiko
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Firebird SELECT IN sehr langsam?

  Alt 1. Jul 2008, 18:21
Habs mal als Bug bei Firebird gemeldet, wenns sich was tut, gib ich hier Bescheid
Gruss Hans

2B or not 2B, that is FF
  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 07:54 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