Net-srac Geschrieben 1. Januar 2006 Teilen Geschrieben 1. Januar 2006 Hallo zusammen und n gesundes neues Jahr, gibt es eine möglichkeit mit einer SQL-Abfrage mehrfach vorkommende Inhalte zu zählen? Also ich habe eine Tabelle z.B. mit Nachrichten und will herausfinden ob jemand spammt. Also müßte ich mit einer Datenbankabfrage schauen ob es doppelte oder mehrfache Nachrichtentexte gibt und diese dann am besten zählen... Ich hab jetzt schon meinen Kopf rauchen lassen aber komm zu keinem passablen Ergebniss. Vielleicht hat ja jemand nen Denkanstoß. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 1. Januar 2006 Teilen Geschrieben 1. Januar 2006 Na ist doch ganz einfach. select count(wert), wert from tabelle group by wert Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 2. Januar 2006 Teilen Geschrieben 2. Januar 2006 Wenn du MySQL > 4.1x benutzt, kannst du das sogar noch schöner machen als diese Abfrage, und zwar: SELECT wert, Anzahl FROM (SELECT COUNT(wert) Anzahl, wert FROM tabelle GROUP BY wert) WHERE Anzahl > 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 2. Januar 2006 Autor Teilen Geschrieben 2. Januar 2006 Na ist doch ganz einfach. select count(wert), wert from tabelle group by wert Frank Soweit ist das ganz gut... Das Problem ist nur, das ich etwa 950.000 Messages in meiner Tabelle hab... Typ ist text Weil es geht ja darum Spammer und Kettenbriefschreiber aufzufinden und die Sachen zu löschen. Und bei so einer Anfrage muß die DB file-sort verwenden was mir den ganzen Server runterzieht... Ich hätte mir jetzt überlegt beim Eintragen einer neuen Mail über Absender, und Nachrichtentext nochmal ein MD5 zu legen und diesen als extra Varchar(30) mit in die Tabelle zu legen und auch mit einem Index zu versehen... Darüber könnte ich dann sehen welcher Absender ständig gleiche Mails verschickt. Allerdings bin ich mir nicht sicher ob diese query soooo viel schneller gehen würde wenn ich die dann über 950.000 MD5-Strings mache... Daher hatte ich gehofft das da noch jemand etwas performanteres im petto hat. Danke trotzdem für die bisherigen Vorschläge. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 2. Januar 2006 Teilen Geschrieben 2. Januar 2006 Ich hätte mir jetzt überlegt beim Eintragen einer neuen Mail über Absender, und Nachrichtentext nochmal ein MD5 zu legen und diesen als extra Varchar(30) mit in die Tabelle zu legen und auch mit einem Index zu versehen... Müsste es nicht VarChar(32) sein? Aber dann könntest du auch char(32) nehmen, weil der md5 immer 32 Zeichen lang ist Du könntest ja für jeden Beitrag nur den Text als Hash ablegen und dann immer den Hash mit den bisherigen Einträgen des Nutzers vergleichen. Das würde die 950000 Strings ja schon gewaltig reduzieren. Einmal die Woche, irgendwann Nachts wenn wenig los ist, könntest du dann ja nen Gesamtcheck über alle Einträge machehn und dir gleiche einträge ausgeben lassen. Die könntest du dann manuell prüfen. Denke mal, dass das Spamen mit verschiedenen Nutzernamen nicht unbedingt das ist, was oft vorkommen würde. Und falls doch, lässt du den Komplettcheck eben 1mal jede Nacht laufen... EDIT: Ah, mir ist ja jetzt erst aufgefallen, es geht um Mails Aber auch da wird das gerade genannte ja anwendbar sein und die Performance steigern... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 3. Januar 2006 Autor Teilen Geschrieben 3. Januar 2006 Hmm... klingt interessant, aber für den Vollcheck werd ich dann doch noch irgendwas finden müssen, damit sie nicht das komplette System in die Knie zwingt. Danke erstmal. Ich werd wohl mal den letzten Ansatz aufgreifen und mir eine Implementierlösung bauen. thnx. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.