AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# SP mit vielen Parametern effizient gestalten
Thema durchsuchen
Ansicht
Themen-Optionen

SP mit vielen Parametern effizient gestalten

Ein Thema von xaromz · begonnen am 26. Aug 2009 · letzter Beitrag vom 3. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 11:39
Datenbank: MySQL • Version: 5.1 • Zugriff über: egal
Hallo,

ich bin gerade dabei, für ein Projekt eine Suchfunktion zu bauen. Meine Suche liefert mir eine Liste mit IDs meiner Datenbankeinträge. Wie kann ich jetzt die Datenbankabfrage möglichst gut gestalten, dass ich diese Liste übergebe und eine Tabelle mit den zugehörigen Einträgen bekomme?

Es muss ja wohl was besseres geben als
SELECT * FROM tabelle WHERE id = 1 OR id = 2 OR id = 4 OR ... Und wie kann ich die Liste meiner IDs an eine SP übergeben? Ich kann doch nicht ein paar hundert Parameter übergeben (die genaue Anzahl ist ja immer unterschiedlich).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 11:43
Du könntest die Abfrage manuell zusammensetzen
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 11:46
Hallo,

klar, das kann ich machen. Ich denka aber, dass so eine Abfrage von der Datenbank sehr ineffizient umgesetzt wird. Mir wäre etwas wie "WHERE id IN Liste" lieber,wie es ja mit SELECT-Queries funktioniert.
Außerdem ist meine gesamte Datenbanklogik in SPs gehalten, ich habe keinen SQL-Code in meinem Programm. Das würde ich gerne beibehalten.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
hoika

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

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 11:50
Hallo,

eine temporäre Tabelle ?


Heiko
Heiko
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 11:54
Hallo,

klar, kann ich machen. Aber dann muss ich tratzdem ert mal ein paar hundert Zeilen anlegen, und dazu muss ich die Liste erst mal der Datenbank übergeben. Das ist ja aber Teil meines Problems.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
hoika

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

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 13:26
Hallo,

Zitat:
Meine Suche liefert mir eine Liste mit IDs meiner Datenbankeinträge.
Da es sich ja um eine DB-Suche handelt,
könnte man die Ergebnis ja gleicht in die TempTable packen, etwa so

Insert Into TempTable (Select Id from Tab1e1 Where Name='Müller') Das Select Id from Tab1e1 Where Name='Müller' wäre jetzt die Suche

Die genaue Syntax bei mysql musst du mal raussuchen.


Heiko
Heiko
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 14:15
Zitat von hoika:
Da es sich ja um eine DB-Suche handelt,
könnte man die Ergebnis ja gleicht in die TempTable packen
wo hab ich geschrieben, dass es eine DB-Suche ist? Wäre das so, dann hätte ich kein Problem. Meine Suchmaschine legt ihren Index aber in einer eigenen Datei ab. Daher ja auch meine Probleme.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
hoika

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

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 14:48
Hallo,

also unter Firebird kann man die Query in der SP
dynamisch zusammenbauen.
Folgendes geht dann ja.

select * from table1
where id in (3,5)

Ausserdem müsste mysql doch String-Funktionen haben ?
Übergebe einer SP alle Parameter mit Komma getrennt als Varchar
und trage die dann in die temp table ein.


Heiko
Heiko
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: SP mit vielen Parametern effizient gestalten

  Alt 26. Aug 2009, 15:38
Hallo,

Zitat von hoika:
Folgendes geht dann ja.

select * from table1
where id in (3,5)

Ausserdem müsste mysql doch String-Funktionen haben ?
Übergebe einer SP alle Parameter mit Komma getrennt als Varchar
das hilft mir weiter. Danke

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: SP mit vielen Parametern effizient gestalten

  Alt 3. Sep 2009, 10:32
Hallo,

jetzt hab ich doch noch eine Frage:
Ich habe das jetzt mit einer temporären Tabelle gelöst, klappt auch wunderbar. Nur steht in der Dokumentation von MySql, dass ein "CREATE TABLE" eine Transaktion beendet. Wenn ich also konkurrierende Aufrufe habe, dann greifen die doch auf die selbe temporäre Tabelle zu, oder? Wenn ich also ein "DROP TABLE IF NOT EXISTS" ausführe, ziehe ich einem anderen Thread die Tabelle unterm Hintern weg. Oder bin ich hier auf den Holzweg?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:18 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