# 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;