# DELETE

DELETE FROM [db.]Tabelle WHERE Ausdruck

DELETE FROM entfernt Zeilen aus der Tabelle [db.]Tabelle, die dem Ausdruck Ausdruck entsprechen. Die gelöschten Zeilen werden sofort als gelöscht markiert und werden automatisch aus allen nachfolgenden Abfragen herausgefiltert. Die Bereinigung der Daten erfolgt asynchron im Hintergrund.

Zum Beispiel löscht die folgende Abfrage alle Zeilen aus der Tabelle hits, bei denen die Spalte Title den Text hello enthält:

DELETE FROM hits WHERE Title LIKE '%hello%';

In MyScale (und ClickHouse) wird dieser Vorgang als leichtgewichtiger Löschvorgang bezeichnet. Er verursacht im Vergleich zur ALTER TABLE ... DELETE (opens new window)-Abfrage deutlich weniger Overhead. Standardmäßig sind leichtgewichtige Löschvorgänge asynchron. Wir haben jedoch mutations_sync (opens new window) auf 1 konfiguriert, was bedeutet, dass der Client auf die Verarbeitung der Anweisung durch eine Replikationsinstanz wartet.

Bitte beachten Sie, dass wir die ALTER TABLE ... DELETE-Abfrage für Tabellen mit Vektorindizes deaktiviert haben, da sie ineffizient ist. Stattdessen empfehlen wir, DELETE FROM für alle Tabellen zu verwenden, da dies viel schneller ist.

# Aktualisierung von Daten

In ClickHouse können Benutzer Daten mit dem Befehl ALTER TABLE ... UPDATE (opens new window) aktualisieren. Es wird jedoch nicht empfohlen, diesen Befehl für Vektoraktualisierungsszenarien in MyScale zu verwenden. Eine bessere Vorgehensweise wäre stattdessen LÖSCHEN und EINFÜGEN.

Die folgenden Abfragen zeigen beispielsweise, wie eine Zeile in der Tabelle test_vector aktualisiert wird, bei der die Spalte id den Wert 100 hat.

DELETE FROM test_vector WHERE id = 100;
INSERT INTO test_vector values (100, [-0.045589335, ..., 0.026581138]);

Die Verwendung von ALTER TABLE ... UPDATE wird nicht empfohlen.

ALTER TABLE test_vector UPDATE vector = [-0.045589335, ..., 0.026581138] WHERE id = 100;