Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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ß. :)

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

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. ;):)

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...

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. :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.