Ich habe eine Tabelle mit 8 Millionen Zeilen, die gegen eine riesige Liste von Badwords gescannt werden muss.beste Abfrage, um eine große MySQL-Datenbank (Zeilen) gegen eine Badword-Liste zu aktualisieren
Meine erste Idee war:
UPDATE `master` SET `blacklisted`='1' WHERE MATCH (`content-desc`, `content-title`) AGAINST ('
badword1 | badword2 | badword3 | "and many more"' IN BOOLEAN MODE)
leider diese Version einige Worte vergessen und war nicht Groß- und Kleinschreibung!
nächster Versuch war zu
$badwords = array("badword1","badword2","badword3","and-many-more");
foreach($badwords AS $name)
{
$sql = "UPDATE `master` SET `blacklisted`='1' WHERE concat(`content-title(mediumtext)`,`content-desc(mediumtext)`) LIKE '%".$name."%'";
sleep(6);
// Could limit this query by 100.000 and adding another foreach loop help?
// How would the foreach look like (select count(*) from master?)/100.000
}
vielen Anfragen, die meinen Server sofort getötet! Vielleicht könnte die kommentierte Idee helfen ?! (aber howto?)
Wer hat die beste Idee, wie Sie diese Abfrage lösen, ohne den mysql-Server zu sehr zu stressen? Vielen Dank!
Die erste sollte unempfindlich Fall gewesen wäre. Welche Sortierung verwenden Sie? Verwenden Sie auch nicht '|' für 'oder'. "Oder" ist [impliziert] (http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html), verwende einfach Leerzeichen. –