0

Leistungsverlust durch select

Moin, ich habe zwei Tabellen einmal "Projekt" und einmal "Projekt_Material". Das Material wird den Projekten zugeordnet, da dies teilweise relativ viele Datensätze sind habe ich Filteroptionen eingeführt. Leider dauert es teilweise mehrere Sekunden nachdem man einen Filter geändert hat. 

let t := this;
let a := number(Material_Status);
let s := lower(Suchfeld);
switch a do
case 0:
if s != null then
select Projekt_Material where Projekte = t and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)
else
select Projekt_Material where Projekte = t
end
case 1:
if s != null then
select Projekt_Material where Projekte = t and Geliefert != true and kommisioniert != true and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)
else
select Projekt_Material where Projekte = t and Geliefert != true and kommisioniert != true
end
case 2:
if s != null then
select Projekt_Material where Projekte = t and (Geliefert = true or kommisioniert != true) and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)
else
select Projekt_Material where Projekte = t and (Geliefert = true or kommisioniert = true)
end
end

Das dabei der Code und wollte Fragen welche Möglichkeiten ich habe, dass das System etwas entlastet wird?

2 Antworten

null
    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Lorenz,

     

    Du bis doch schon in Projekte und suchst zugeordnete Datensätze aus Projekt_Material - dann genügt das so (wenn die Verknüpfung zu Projekt_Material auch so heißt):

     

    let a := number(Material_Status);
    let s := lower(Suchfeld);
    switch a do
    case 0:
     if s != null then
        Projekt_Material [Projekte = t and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)]
     else
        Projekt_Material
    end
    case 1:
     if s != null then
        Projekt_Material [Projekte = t and Geliefert != true and kommisioniert != true and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)]
     else
        Projekt_Material [Projekte = t and Geliefert != true and kommisioniert != true]
    end
    case 2:
     if s != null then
        Projekt_Material [Projekte = t and (Geliefert = true or kommisioniert != true) and contains(lower('Mitarbeiter - Beschreibung' + Beschreibung + Oberbegriff), s)]
     else
        Projekt_Material [Projekte = t and (Geliefert = true or kommisioniert = true)]
     end
    end

     

    lg, Torsten

    • Lamping & Reisig Gmbh & Co.KG
    • LuRLorenz
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank, es hat die Wartezeit gefühlt halbiert. Habe mich schon länger gefragt, wofür die [] Klammern da sind.