Estoy escribiendo una aplicación y estoy usando MySQL como DBMS, estamos descargando ofertas de propiedad y hubo algunos problemas de rendimiento. La arquitectura anterior se veía así: Se ha actualizado una propiedad. Si el número de filas afectadas no es 1, entonces la actualización no se considera exitosa, de lo contrario, la consulta de actualización resuelve nuestro problema. Si la actualización no fue exitosa y el número de filas afectadas es más de 1, tenemos duplicados y los eliminamos todos. Después de eliminar duplicados si es necesario si la actualización no fue exitosa, ocurre una inserción. Esta arquitectura funcionaba bien, pero hubo algunos problemas de velocidad, ya que las propiedades se eliminan si no se actualizan durante 15 días. Teóricamente, el problema principal es eliminar propiedades, porque algunas propiedades están activas durante meses y los índices están muy lejos el uno del otro (estamos hablando de más de 500 propiedades).¿Reemplazar tiene una cláusula where?
Nuestro anfitrión me dijo que usara sustituyen en lugar de eliminar las propiedades y todas las propiedades en desuso deben ser considerados como muertos. He hecho esto, pero los problemas comenzaron a ocurrir debido a un error de sintaxis y no pude encontrar en ninguna parte un ejemplo de reemplazo con una cláusula where (me gustaría reemplazar una propiedad DEAD con la nueva propiedad en lugar de eliminar la anterior) propiedad e inserte una nueva para asegurar la optimización). Mi consulta era la siguiente:
replace into table_name(column1, ..., columnn) values(value1, ..., valuen) where ID = idValue
Por supuesto, he calculado idValue y manejado todo, pero tuve un error de sintaxis. Me gustaría saber si estoy equivocado y hay una cláusula Where para reemplazar.
He encontrado una solución alternativa, que es incluso mejor que reemplazarla (usando simplemente una consulta de actualización) porque las eliminaciones están sucediendo detrás de las cortinas si uso replace in, pero me gustaría saber si estoy equivocado cuando digo que replace into no tiene una cláusula where. Para mayor referencia, consulte este enlace:
http://dev.mysql.com/doc/refman/5.0/en/replace.html
Gracias por sus respuestas de antemano, Lajos Árpád
Muchas gracias por su respuesta. De hecho, es una exageración, tienes toda la razón, solo quiero saber si insertar tiene una cláusula dónde para filtrar qué reemplazar, porque nuestro anfitrión dijo que sí y para aclarar el asunto (si ya encontré) esto no veo una razón para no decirle) REEMPLAZAR [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name, ...)] SELECCIONAR ... Si entendí correctamente, la sintaxis anterior es, donde dices que podría aparecer un. Tiene razón al respecto, sin embargo, la cláusula where está en el select –
Y el reemplazo en no tiene un en el ejemplo, entonces, creo que replace into no tiene un where. –