# DELETE

DELETE FROM [db.]table WHERE expr

DELETE FROM elimina filas de la tabla [db.]table que coinciden con la expresión expr. Las filas eliminadas se marcan como eliminadas de inmediato y se filtrarán automáticamente en todas las consultas posteriores. La limpieza de datos ocurre de forma asíncrona en segundo plano.

Por ejemplo, la siguiente consulta elimina todas las filas de la tabla hits donde la columna Title contiene el texto hello:

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

En MyScale (y ClickHouse), esta operación se conoce como eliminación ligera. Involucra significativamente menos sobrecarga en comparación con la consulta ALTER TABLE ... DELETE (opens new window). Por defecto, las eliminaciones ligeras son asíncronas. Sin embargo, hemos configurado mutations_sync (opens new window) en 1, lo que significa que el cliente esperará a que una réplica procese la declaración.

Tenga en cuenta que hemos deshabilitado la consulta ALTER TABLE ... DELETE en tablas con índices vectoriales debido a su ineficiencia. En su lugar, recomendamos utilizar DELETE FROM en todas las tablas, ya que es mucho más rápido.

# Cómo actualizar datos

En ClickHouse, los usuarios pueden actualizar datos utilizando el comando ALTER TABLE ... UPDATE (opens new window). Sin embargo, no se recomienda utilizar este comando para escenarios de actualización de vectores en MyScale. Sería mejor utilizar DELETE and INSERT en su lugar.

Por ejemplo, las siguientes consultas demuestran cómo actualizar una fila en la tabla test_vector donde la columna id es igual a 100.

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

Tenga en cuenta que MyScale es una base de datos OLAP y no está optimizada para operaciones frecuentes de inserción y eliminación. Para un rendimiento óptimo, es crucial ejecutar múltiples inserciones y eliminaciones de datos en una sola sentencia, en lugar de procesar cada fila individualmente. El siguiente ejemplo demuestra cómo realizar de manera eficiente operaciones de inserción y eliminación por lotes en una sola sentencia.

DELETE FROM test_vector where id in (2, 3, 5, 7, 11, ...);
INSERT INTO test_vector values (2, [-0.045589335, ..., 0.026581138]), (3, [-0.051993933, ..., 0.031703997]), (5, [-0.038116932, ..., -0.116080105]), ...;

No se recomienda utilizar ALTER TABLE ... UPDATE.

ALTER TABLE test_vector UPDATE vector = [-0.045589335, ..., 0.026581138] WHERE id = 100;
Last Updated: Fri Nov 01 2024 09:38:04 GMT+0000