![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: egal
SP mit vielen Parametern effizient gestalten
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
SQL-Code:
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).
SELECT * FROM tabelle WHERE id = 1 OR id = 2 OR id = 4 OR ...
Gruß xaromz |
Re: SP mit vielen Parametern effizient gestalten
Du könntest die Abfrage manuell zusammensetzen
|
Re: SP mit vielen Parametern effizient gestalten
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 |
Re: SP mit vielen Parametern effizient gestalten
Hallo,
eine temporäre Tabelle ? Heiko |
Re: SP mit vielen Parametern effizient gestalten
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 |
Re: SP mit vielen Parametern effizient gestalten
Hallo,
Zitat:
könnte man die Ergebnis ja gleicht in die TempTable packen, etwa so
SQL-Code:
Das Select Id from Tab1e1 Where Name='Müller' wäre jetzt die Suche
Insert Into TempTable (Select Id from Tab1e1 Where Name='Müller')
Die genaue Syntax bei mysql musst du mal raussuchen. Heiko |
Re: SP mit vielen Parametern effizient gestalten
Zitat:
Gruß xaromz |
Re: SP mit vielen Parametern effizient gestalten
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 |
Re: SP mit vielen Parametern effizient gestalten
Hallo,
Zitat:
Gruß xaromz |
Re: SP mit vielen Parametern effizient gestalten
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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