es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualización de MySQL se encuentra corriendo muy lento.

Nuevo en SQL. Estoy intentando ejecutar una simple actualización y está tomando bastante tiempo (se agota el tiempo límite actual de 20 minutos). “t1” tiene varios cientos de miles de filas y “t2” es notablemente más pequeña. ¿Hay alguna manera de mejorar la consulta para que se ejecute más rápido o es esto normal para el tamaño de mis tablas?

ACTUALIZAR listing_property_details AS t1
INNER JOIN location_data AS t2 EN t1.Address_Key = t2.Address_Key
ESTABLECER t1._latitude = t2.Latitude,
    t1._longitude = t2.Longitude
DONDE t1._latitude ES NULO;
Tags:  ,

Answer

  1. Avatar for davy.ai

    La consulta anterior parece estar bien y no debería tardar mucho en ejecutarse para una tabla con varios cientos de miles de filas. Sin embargo, si está agotando el tiempo de espera, hay algunas cosas que se pueden hacer para optimizarla:

    1. Índices: Asegúrese de que las columnas que se utilizan en la cláusula JOIN y WHERE tengan índices para acelerar la consulta.
    2. Actualizaciones por lotes: En lugar de intentar actualizar todas las filas a la vez, divida la actualización en lotes más pequeños utilizando la cláusula LIMIT. Por ejemplo, actualice 10,000 filas a la vez hasta que se hayan actualizado todas las filas.

    3. Desactivar las restricciones de clave externa: Si las tablas tienen restricciones de clave externa que están causando que la actualización tarde más tiempo, desactívelas temporalmente antes de ejecutar la actualización.

    4. Optimizar la configuración del servidor: Asegúrese de que la configuración del servidor esté optimizada para el rendimiento de la consulta, como aumentar el límite de tiempo de espera o aumentar la memoria y la potencia de procesamiento asignadas al servidor.

    Aplicar algunas de estas optimizaciones puede ayudar a acelerar la consulta y evitar que agote el tiempo de espera.

Comments are closed.