Este artículo se comparte desde la comunidad de la nube de Huawei " [Optimización de SQL] Por qué a veces es imposible utilizar hashjoin con un mejor rendimiento de ejecución ", autor: jumpdb.
1. La unión hash suele ser mejor que la unión nestloop
1. Desactive el modo Nestloop a nivel de sesión y configure enable_nesloop como desactivado;
CREAR BASE DE DATOS test_td CON DBCOMPATIBILITY='td'; crear tabla dim_day(day_code char(8)); cree la tabla dwr_rpo como seleccione fecha_actual - 1 como código_día; --返回了date类型 test_td=# \d+ dwr_rpo Tabla "public.dwr_rpo" Columna | Tipo | Modificadores | Almacenamiento | Objetivo de estadísticas | Descripción -+------+-----------+---------+--------- -----+------------- código_día | fecha | | llano | | Tiene OID: no Distribuir por: ROUND ROBIN Nodos de ubicación: TODOS LOS DATANODOS Opciones: orientación=fila, compresión=no explicar seleccionar * de dwr_rpo a unión izquierda dim_day c en c.day_code = a.day_code; identificación | operación | Filas electrónicas | E-distinto | Memoria electrónica | Ancho electrónico | Costos electrónicos ---+------------------------------------------- ---+---------+------------+----------+---------+-- ------------ 1 | -> Streaming (tipo: GATHER) | 1310148 | | | 1694 | 279235196,70 2 | -> Unión izquierda de bucle anidado (3, 4) | 1310148 | | 1 MB | 1694 | 279229682.93 3 | -> Sec Scan en dwr_rpo a | 1310148 | | 1 MB | 1676 | 46589.16 4 | -> Materializar | 109575 | | 16 MB | 22 | 3747,76 5 | -> Streaming(tipo: TRANSMISIÓN) | 109575 | | 2 MB | 22 | 3565.146 | -> Sec Scan en dim_day c | 36525 | | 1 MB | 22 | 272.75 Información de predicado (identificada por identificación del plan) ----------------------------------------- ------------------------------------ 2 --Filtro de unión a la izquierda de bucle anidado (3, 4) : ((c.day_code)::marca de tiempo sin zona horaria = a.day_code)
Los diferentes tipos de datos tienen diferentes funciones de cálculo de hash y no se pueden realizar comparaciones de hash en tipos de datos incompatibles entre sí.
Complejidad de Nestloop: 131w * 10w = 131 mil millones
Complejidad de hashjoin: 131w
Los tipos parecen similares, pero debido a las diferencias de precisión, formato, zona horaria, etc. en ambos extremos, no pueden considerarse directamente iguales.
seleccione oprname,oprkind,oprcanhash, (seleccione typname de pg_type donde id=oprleft) oprleft, (seleccione typname de pg_type donde oid=oprright) oprright de pg_operator donde oprname='=' y oprcanhash='f'; nombre de operación | tipo de operación | oprcanhash | oprizquierda | derecho ---------+---------+------------+---------------+ --------------- = | segundo | f | xid | int8 = | segundo | f | xid32 | int4 = | segundo | f | tid | tiempo = | segundo | f | caja | cuadro = | segundo | f | camino | camino = | segundo | f | tinterval | tinterval = | segundo | f | dinero | dinero = | segundo | f | circulo | círculo = | segundo | f | lseg | lseg = | segundo | f | línea | línea = | segundo | f | poco | bit = | segundo | f | varbit | varbit = | segundo | f | fecha | marca de tiempo = | segundo | f | fecha | marca de tiempo = | segundo | f | marca de tiempo | fecha = | segundo | f | marca de tiempo | fecha = | segundo | f | marca de tiempo | marca de tiempo = | segundo | f | marca de tiempo | marca de tiempo = | segundo | f | tsvector | tsvector = | segundo | f | tsquería | tsquery = | segundo | f | registro | registro = | segundo | f | hll | hll = | segundo | f | hll_hashval | hll_hashval = | segundo | f | mapa de bits rugiente | mapa de bits rugiente (24 filas)
current_date es el tipo de fecha en el modo de compatibilidad TD;
Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~
El autor del marco de código abierto NanUI pasó a vender acero y el proyecto fue suspendido. La primera lista gratuita en la App Store de Apple es el software pornográfico TypeScript. Acaba de hacerse popular, ¿por qué los grandes empiezan a abandonarlo? Lista de octubre de TIOBE: Java tiene la mayor caída, C# se acerca Java Rust 1.73.0 lanzado Un hombre fue alentado por su novia AI a asesinar a la Reina de Inglaterra y fue sentenciado a nueve años de prisión Qt 6.6 publicado oficialmente Reuters: RISC-V La tecnología se convierte en la clave de la guerra tecnológica entre China y Estados Unidos. Nuevo campo de batalla RISC-V: no controlado por ninguna empresa o país, Lenovo planea lanzar una PC con Android.