Wir haben eine Tabelle zum Tracking von Suchwörtern, d.h. den Bestandteilen einer Suchphrase:

Um jetzt aus einer um Dropwords und bösartigen/dämlichen Blödsinn (nicht druckbare Zeichen, Deppen-Apostrophe, ggf. Satzzeichen) bereinigten Phrase die einzelnen Keywords einzufügen, kann man die Phrase natürlich im Applikationscode an den Leerzeichen splitten und dann in einem Loop die einzelnen Wörter einfügen. Aus einer Suchphrase von drei Wörtern werden dann drei einzelne INSERT-Statements.

Es geht aber auch eleganter.

Mit string_to_array zerlegen wir den String an den Leerzeichen in ein Array von Strings, mit unnest wandeln wir das Array in eine Tupel-Menge um und JOINen dann die Common Table Expression mit User-ID und Datum drauf. Somit brauchen wir keine Transaktion, um einen atomaren INSERT für die gesamte Phrase zu erreichen und haben nicht nur wegen der reduzierten Trips zur Datenbank, sondern auch wegen der zusammengefassten Schreiboperation einen Performance-Gewinn für Datenbank und Applikation – instant win-win.

Kommentar verfassen