Eine Suchspalte ist bei der Suche über mehrere Spalten oder Subtabellen auch eine Möglichkeit der Optimierung.
Aber das war nicht mein Vorschlag.
Ich würde alle Daten der relevanten Spalten als Ergebnis noch einmal speichern.
Einmal abfragen und entschlüsseln:
Code:
Select id, name, vorname from patienten
Dann eine zusätzliche Tabelle mit einem Blobfeld und nur einem Datensatz wo das Ergebnis der Abfrage z.B. als
CSV wieder verschlüsselt abgelegt wird.
Dieses Blobfeld muss bei jeder Änderung der orginalen Tabelle aktualisiert werden, in der selben Transaktion die auch den Patienten speichert.
(lesen, entschlüsssln, geänderte Zeile austauschen, verschlüsseln, speichern)
Im Prinzip eine materialisierte View.
Auf diese Weise braucht der Schlüssel den Client nie verlassen.
Bei 15.000 Patienten sollte dieser Blob etwa 1MB groß sein, da dürfte das Entschlüsseln kaum spürbar verzögern.