AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Index bei StoredProcezure
Thema durchsuchen
Ansicht
Themen-Optionen

Index bei StoredProcezure

Ein Thema von Dumpfbacke · begonnen am 25. Nov 2021 · letzter Beitrag vom 1. Dez 2021
Antwort Antwort
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Index bei StoredProcezure

  Alt 25. Nov 2021, 15:40
Datenbank: Firebird • Version: 2.5 • Zugriff über: FIREDAC
Hallo Ihr Experten,
leider hab ich ein weitere Problem und weiß nicht so recht wie ich es lösen soll. Ich habe eine extrem große Tabelle und möchte dort ein Bestimmtes Ergebnis haben. Ich muss hier leider Daten aus einen anderen Datenbank mit anzeigen. Somit muss ich das ganze in einer StoredProdedure machen da ich on externel benutzen möchte / muss. Hier funktioniert kein Index (lt. IBexpert) egal was ich mache. Ist das richtig so und habe Ihr hier einen Lösung bzw. hat Ihr so ein Problem schon mal gelöst ? Wenn ich den Select normal ausführe also in einer normalen Abfrage, so funktioniert es recht gut und das Ergebis ist nach 14 Sekunden auch schon da. Lt.IBExpert wird auch ein Index benutzt.

Tanja.
Tanja
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: Index bei StoredProcezure

  Alt 25. Nov 2021, 16:26
Bei on external keine Select-Anweisung reinschreiben, sondern auch in der anderen Datenbank eine stored procedure erstellen, die die eigentliche Abfrage macht, und die dann per "on external" aufrufen.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.878 Beiträge
 
Delphi 12 Athens
 
#3

AW: Index bei StoredProcezure

  Alt 25. Nov 2021, 18:50
Ich vermute, IBExpert analysiert das Statement schlicht nicht.
In Execute Statement kann prinzipiell jeder Müll drin stehen, das fällt einem erst zur Laufzeit auf die Füße.
Wenn der Index lt. Plananalyzer benutzt wird, wenn du das Statement direkt auf der Datenbank ausführst, wird das auch bei execute Statement so sein.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Index bei StoredProcezure

  Alt 25. Nov 2021, 21:25
Das kein Plan zum Extertal select abrufbar ist, könnte auch daran liegen, dass vom Server eine eigene Verbindung zur zweiten DB aufgebaut wird und dessen Plan ja nichts mit der primären Verbindung zu tun hat.
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Index bei StoredProcezure

  Alt 26. Nov 2021, 07:14
wenn du mit ibexpert-services-traceandaudit auf beiden datenbanken eine session offen hast,
würdest du auch sehen, was deine staements da so veranstalten.

lokal gibt es keinen weg, das remote ausgeführte statement sonst zu analysieren, weil
über die api die dafür erforderlichen Daten nicht wmitkommen, aber wie schon gesagt,
in trace and audit ist das meistens sogar besser, weil da auch aufgerufene trigger etc
erkennbar sind.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Index bei StoredProcezure

  Alt 26. Nov 2021, 15:09
Ich habe mich vermutlich etwas uneindeutig ausgedrückt. Zu dem Punkt on External bin ich noch nicht mal gekommen bis jetzt und hänge schon vorher fest. Ich erkläre es noch mal besser dann wird es klar.

Ich habe ein Tabelle mit 86 Mio Datensätze und dort möchte ich áls Ergebnis eine Menge zwischen 1500 - 2500 Datensätze habe. Vorerst einmal zum testen und wenn es mit dem on External funktioniert wird das Ergebnis zuschen 50 und 100 liegen da ich dann nocht mehr gruppieren kann / möchte. Es geht hier nur um zwei Felder der Tabelle. Mit dem Select (normal) dauert es 15 Sekunden bei 2244 Datensätze und das Ergebnis liegt vor. Auf den Felder liegt ein Index der auch genomen wird lt. IBExpert.

Delphi-Quellcode:
Select Feld1,Feld2
From Tabelle
where Feld1 starting with 'ABCand Feld2 starting with '123'
Group by Feld1,Feld2
Das ganze in einer Stored Prodcedue dauert sehr lange 51 Minuten

Delphi-Quellcode:
Select Feld1,Feld2
From Stored_Tabelle
where Feld1 starting with 'ABCand Feld2 starting with '123'
Group by Feld1,Feld2
Die Prozedure hierzu ist

Delphi-Quellcode:
for
  Select T1.Feld1, T1.Feld2
  From Tabelle T1
   into :VPSZ,Fachsz
  do
  suspend;
Beide Ergebnisse stimmen überein. Es kann doch hier nur so sein das hier kein Index benutzt wird oder ?

On Externel geht aber doch nur ein einer Stored Prodedure oder ?

Wenn jemnd auch einen anderen Ansatz hat immer her damit. Dei Daten liegen leider in drei verschiedenen Datenbanken

Tanja
Tanja
  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 10:33 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