Hallo!
"SELECT id FROM session_data WHERE session_id != '' AND angebots_id > 0 AND g=0 AND kw=0 AND ... AND g_nachname = ''"
Du hast sehr viele VARCHAR-Spalten, was natürlich nicht gerade performant ist. Du vergleichst nach Leerstrings. Wenn nichts eingetragen ist, dann soll die Spalte den Wert NULL annehemen.
vorname VARCHAR(20) NULL DEFAULT NULL;
Ersetze alle Datenwerte, die '' enthalten.
UPDATE session_data SET vorname=NULL WHERE vorname='';
Die Spalte mit den Postleitzahlen kann eine INT-Spalte werden, wenn es im deutsche PLZs geht.
Du suchst nach Datensätze, bei denen alle Datenwerte NULL oder bzw. '' sind, wegen "AND". Lege eine weitere Spalte an, die erst einen Wert, zm Beispiel 1 (TINYINT oder BOOL) annimmt, wenn etwas in den anderen Spalten eingetragen wird.
MfG, André Laugks