Base de datos de Shanghai Tengke Education Dream, formación de productos secos, base de datos nacional, DM6, primera experiencia (2)

Experimémoslo, creemos una tabla de partición vertical:

crear tabla test_part (
id int,
t1 varchar (10),
t2 varchar (10),
t3 varchar (10),
t4 varchar (10),
CLUSTER PRIMARY KEY (id)
)
partición por columna
((id, t1, t2),
(id, t3, t4)
);

  Vea la información de la tabla de particiones actual a través de la tabla del sistema DM sysparttables:

SQL> seleccionar * de sysparttables;
BASE_TABLE_ID PART_TABLE_ID RESVD1 RESVD2 RESVD3 RESVD4 RESVD5        
1 1007 1008 NULL NULL NULL NULL NULL    
2 1007 1009 NULL NULL NULL NULL NULL    
2 filas obtuvieron
tiempo usado: 0.268 (ms).

  Podemos ver que el ID de la tabla base es 1007 y los ID de la subtabla de partición son 1008 y 1009. Luego encontramos las tres tablas 1007, 1008 y 1009.

SQL> seleccione el nombre de systables donde id = 1007;
nombre    
1 test_part    
1 filas tienen
tiempo usado: 0.301 (ms).
SQL> seleccione el nombre de systables donde id = 1008;
nombre        
1 test_part00DMPART    
1 filas tienen
tiempo de uso: 0.236 (ms).
SQL> seleccione el nombre de systables donde id = 1009;
nombre        
1 test_part01DMPART    
1 filas tienen
tiempo de uso: 0.185 (ms).

  Usamos la función tabledef para verificar la definición de estas tres tablas.

SQL> seleccione tabledef ('mytest', 'sysdba', 'test_part');
1 CREAR TABLA "test_part" EN "mytest"
(
"id" INTEGER,
"t1" VARCHAR (10),
"t2" VARCHAR (10),
"t3" VARCHAR (10),
"t4" VARCHAR (10),
CLUSTER PRIMARY CLAVE ("id")) PARTICIÓN POR COLUMNA (("id", "t1", "t2"), ("id", "t3", "t4"))
1 filas consiguieron
tiempo de uso: 0,228 (ms).

SQL> seleccione tabledef ('mytest', 'sysdba', 'test_part00DMPART');
1 CREAR TABLA "test_part00DMPART" EN "mytest"
(
"id" INTEGER,
"t1" VARCHAR (10),
"t2" VARCHAR (10),
CLUSTER PRIMARY KEY ("id"))    
1 filas obtuvieron
tiempo de uso: 0.290 (ms).

SQL> seleccione tabledef ('mytest', 'sysdba', 'test_part01DMPART');
1 CREATE TABLE "test_part01DMPART" AT "mytest"
(
"id" INTEGER,
"t3" VARCHAR (10),
"t4" VARCHAR (10),
CLUSTER PRIMARY KEY ("id"))    
1 filas tienen
tiempo de uso: 0.292 (ms ).

  Puede ver que todas las subtablas de partición creadas automáticamente por el sistema contienen el ID de columna CLUSTER PK. Las columnas t1 y t2 están en la subtabla de partición test_part00DMPART, y las columnas t3 y t4 están en la subtabla de partición test_part01DMPART.

SQL> explicar seleccionar * de test_part;
#RSET: [2, 2, 0];
    #XNLP: [0, 0, 0]; CROSS_JOIN
        #CSEK: [2, 2, 0]; INDEX33555488 (test_part00DMPART), FULL_SCAN
        #CSEK: [2, 2, 0]; INDEX33555489 (test_part01DMPART), INDEX_EQU_SEARCH
tiempo utilizado: 7.339 (ms).
SQL> explica seleccionar t1, t2 de test_part;
#RSET: [2, 2, 0];
    #CSEK: [2, 2, 0]; INDEX33555488 (test_part00DMPART),
tiempo de FULL_SCAN utilizado: 0,212 (ms).
SQL> explica seleccionar t3, t4 de test_part;
#RSET: [2, 2, 0];
    #CSEK: [2, 2, 0]; INDEX33555489 (test_part01DMPART),
tiempo de FULL_SCAN utilizado: 0,199 (ms).

  Puede verse claramente en el plan de ejecución que cuando se consulta la tabla completa, los resultados se obtienen al UNIR las dos subtablas. Cuando solo se consultan todas las columnas de la subtabla, solo se requiere la subtabla. En la práctica, en situaciones similares al ejemplo anterior, el uso de particiones verticales reducirá en gran medida la cantidad de datos de consulta, mejorará la eficiencia de la consulta y optimizará el rendimiento del sistema.

Supongo que te gusta

Origin blog.csdn.net/qq_42726883/article/details/108651454
Recomendado
Clasificación