Dublettencheck - Server antwortet nicht
Hallo zusammen,
ich habe folgende Problemstellung.
Es gibt eine Tabelle mit Telefonnummern die gesperrt sind. (ca. 60.000) Eine weitere mit Importdaten. (ca. 1.000) bevor ich die Importdaten in meine Kunden Tabelle schreibe, mache ich eine Check, ob die Telefonnummern eventuell gesperrt sind.
Ich habe einen Button mit einem Script versehen:
do as server
for i in select Import do
i.(gesperrt := if cnt((select Blacklist)[Telefon = i.Telefon]) > 0 then
1
else
0
end)
end
end
Diese Script läuft dann sehr lange und steigt dann mit dem Fehler "Server antwortet nicht" aus.
Ich teste gerade mit der Cloud Version, plane aber später produktiv mit der Enterprise Version zu arbeiten.
Liegt das Aussteigen des Servers an der Cloud Version oder habe ich einen Fehler im Script? Gibt es eine bessere Variante den Abgleich zu machen?
Macht es vielleicht Sinn die beiden Telefon Felder zu indexieren?
3 Antworten
-
Kann ich leider nur bestätigen. Bei Rechenintensiven Anfragen steigt Ninox Server irgendwann aus. Ich musste gestern sogar eine Datenbank komplett löschen und eine frühere backup ohne Code aufspielen, weil Ninox die Rechenintensive Formel nicht mehr löschen konnte.
In deinem Fall würde ich auf jeden Fall die Telefonfelder indexieren. Außerdem würde ich versuchen mit like zu arbeiten. Irgendwann hat der Ninox-Erfinder Frank gesagt, dass like deutlich performanter ist als =. Beim Vergleich ignoriert like Groß/Klein Schreibung, sonst nichts:
---do as server
for i in select Import do
i.(gesperrt := if cnt((select Blacklist) where Telefon like i.Telefon) > 0 then
1
else
0
end)
end
end
---
Ich weiß nicht ob es funktioniert aber ich würde vorab eine Prüfung machen ob es überhaupt ein Treffer gibt:
---
let mySource:=concat(select Import.Telefon);
let myARR:=select Blacklist where contains(mySource,Telefon);
if cnt(myARR)>0 then
for i in myARR do
select Import where Telefon like i.Telefon.(gesperrt:=true)
end
end---
Ich habe extra where statt Eckklammern genommen weil die Eckklammern die Daten eicgentlich ind Client holen.
Probier es mal aus.
Leo
-
Vielen Dank für Deine Hilfe. Die Änderungen haben leider nicht wirklich etwas bewirkt. Habe meine Frage jetzt mal direkt an den Support gestellt.
-
Da bin ich mal gespannt. Sag bescheid, wenn's geklappt hat.
Leo
Content aside
- vor 4 JahrenZuletzt aktiv
- 3Antworten
- 466Ansichten