Rencontre un problème, d'optimiser notre numéro de Sqoop de pompage pour extraire la table source de données MySQL est une table partitionnée, mais notre champ n'est pas extrait champ de partition supplémentaire, les données de table environ 500 millions, dans une requête très lente , de trouver des moyens d'améliorer l'efficacité.
(1) Si vous connaissez le nom de la partition , vous pouvez directement interroger le nom de la partition correspondante
sélectionner * de partition CM.loan_shu_api_result (SYS_P505)
(2) Si vous ne connaissez pas le nom de la partition , mais sachez que la partition de la clé primaire plage de valeurs de champ , peut être interrogé en fonction de la gamme de partitionnement
sélectionner * de CM.loan_shu_api_result où default_dt > = to_date ( ' 01/02/2019 ' , ' aaaa-mm-jj ' ) et default_dt < to_date ( ' 01/03/2019 ' , ' aaaa-mm-jj ' )
et substr (call_dt, 1 , 4 ) || substr (call_dt, 6 , 2 ) || substr (call_dt, 9 , 2 ) = " 20190220' ;
Description: default_dt champ de partition, call_dt champ d'extraction supplémentaire
(3) Si vous ne connaissez pas le nom de la partition, la partition ne connaissait pas la plage de valeurs primaire champ clé , vous pouvez utiliser PARTITION clause FOR d'une requête, comme savons maintenant seulement que cela est une partition de données 15/02/2019
sélectionner * de partition CM.loan_shu_api_result pour (to_date ( ' 15/02/2019 ' , ' aaaa-mm-jj ' ));