Tengo una tabla MyISAM con más de 10^7 filas. Al agregar datos, tengo que actualizar ~ 10 filas al final. ¿Es más rápido eliminarlos y luego insertar los nuevos, o es más rápido actualizar esas filas? Los datos que deben actualizarse no son parte del índice. ¿Qué pasa con el índice/fragmentación de datosrendimiento MySQL ¿ELIMINAR o ACTUALIZAR?
Respuesta
UPDATE
es mucho más rápido.
Cuando UPDATE
, los registros de la tabla apenas está siendo reescrito con nuevos datos.
Cuando DELETE
, los índices deben ser actualizados (recuerda, se elimina toda la fila, no sólo las columnas que hay que modificar) y bloques de datos se pueden mover (si se golpea el límite PCTFREE
)
Y todo esto debe hacerse nuevamente en INSERT
.
Es por eso que siempre se debe utilizar
INSERT ... ON DUPLICATE KEY UPDATE
en lugar de REPLACE
.
La primera es una operación UPDATE
en caso de una violación de clave, mientras que la última es DELETE
/INSERT
.
Es más rápido de actualizar. También puede utilizar INSERT ON DUPLICATE KEY UPDATE
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
Para más detalles leer actualizar documentation
BORRAR Lógicamente + ADD = 2 acciones, UPDATE = 1 acción. Además, al eliminar y agregar nuevos cambios, se registran los ID en auto_increment, por lo que si esos registros tienen relaciones que se romperían o necesitarían actualizaciones también. Iría por ACTUALIZACIÓN.
mediante una actualización en la Columna = 'algo' debe utilizar un índice, siempre y cuando los criterios de búsqueda se encuentra en el índice (si se trata de una exploración o buscan es un tema completamente diferente).
si están haciendo estas actualizaciones mucho, pero 'no tiene un índice en la columna de criterios, yo recomendaría la creación de un índice en la columna que está utilizando. eso debería ayudar a acelerar las cosas.
En lugar de eliminar o actualizar los datos por el bien del rendimiento, consideraría la partición.
http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html
Esto le permitirá mantener los datos histórica y no degradar el rendimiento.
- 1. ¿Eliminar filas de MySql, o marcar "muerto"?
- 2. CSV vs MySQL rendimiento
- 3. En MySQL, ¿es más rápido eliminar e insertar o es más rápido actualizar las filas existentes?
- 4. PHP MYSQL Insertar/Actualizar
- 5. puede Dapper implementar múltiples eliminar insertar o actualizar como QueryMultiple?
- 6. Disparador para insertar, actualizar, eliminar
- 7. Rendimiento de MYSQL "IN"
- 8. JTable Cómo actualizar el modelo de tabla después de insertar Eliminar o actualizar los datos.
- 9. ¿Actualizar las vistas de MySQL?
- 10. MYSQL - Actualizar una columna completa
- 11. Unidad prueba insertar/actualizar/eliminar
- 12. Actualizar MYSQL con jQuery/AJAX
- 13. Pregunta de rendimiento: ON DUPLICATE KEY UPDATE vs UPDATE (MySQL)
- 14. entidad de doctrina eliminar vs eliminar consulta, comparación de rendimiento
- 15. Rendimiento y variables MySQL ajustando
- 16. MySQL Query mejorar el rendimiento
- 17. MySQL Enum ¿ventaja de rendimiento?
- 18. SI EXISTE antes de INSERTAR, ACTUALIZAR, ELIMINAR para la optimización
- 19. T-SQL Insertar o actualizar
- 20. sqlite, actualizar o sustituir
- 21. sintaxis de MySQL para Unirse Actualizar
- 22. MySQL Eliminar cero pendiente
- 23. Eliminar archivo vs directorio + Recrear rendimiento
- 24. MySQL TEXT o VARCHAR
- 25. ¿ACTUALIZAR/ELIMINAR en mysql y obtener la lista de identificadores de fila afectados?
- 26. Listview eliminar elemento y Actualizar - android
- 27. Actualizar una fila completa en MySQL
- 28. MySQL Fire Trigger para insertar y actualizar
- 29. LINQ-to-SQL CompiledQuery.Compile() con Actualizar, Eliminar, Insertar?
- 30. SQL Server gatillo conmutador Insertar, eliminar, actualizar
Amigo, fuiste más rápido en 3 minutos, ¡qué injusticia es!) –