除外列のあるパフォーマンスのチューニング

分析に未使用列が含まれることはよくあります。不要なのに選択されている列は、パフォーマンスに深刻な影響を与えます。このトピックでは、不要な列をすべて除去することでパフォーマンスを改善する方法を説明します。

未使用列の識別

ビューから除外される列(たとえば、Year)を分析に含めると、次のことが原因でパフォーマンスに影響します:
  • データベースから取得する必要のあるデータの量の増加
  • 取得して処理する列の数の増加
  • 分析で集計の複数レベルで結果を計算することの強制

次の図は、地域および年別の顧客数が表示された単純なレポートを示しています。

ceal_report_customers_by_region_year.jpgの説明が続きます
図ceal_report_customers_by_region_year.jpgの説明

表示されるレポートは、地域別の顧客数を示したグラフです。Year列が除外されていることがわかります。

ceal_report_graph_customers_by_region.jpgの説明が続きます
図ceal_report_graph_customers_by_region.jpgの説明

未使用の「年」列のある論理問合せ

Year列は、ビューに表示されていない場合でも、論理問合せの一部としてまだ選択されています。

ceal_logical_query_includes_year.jpgの説明が続きます
図ceal_logical_query_includes_year.jpgの説明

Year列を分析に含めると、次の影響があります:
  • 追加の列が取得され、処理されます。
  • 追加の行が取得され、処理されます(顧客行の数が地域のみでなく年でも選択されるため)。
  • 追加の集計が必要です。

未使用の「年」列のある物理問合せ

物理問合せを確認すると、パフォーマンスが影響を受けている領域を識別できます。

ceal_-physical_query_performance_impact.jpgの説明が続きます
図ceal_-physical_query_performance_impact.jpgの説明

この例は、顧客数集計ルールのSELECT count distinctを示しています。一部の状況では、合計の集計ルールのあるレポートが影響を受けることもあります。このシナリオで生成される問合せでも、グルーピング・セットが使用されます。データベース・レベルでは、場合によっては多数の行(数百万)を選択し、Regionと同様にYearおよびRegionでグループ化する必要があります。これにより、無駄なデータベース・リソースが大量に消費される可能性があります。

未使用列の削除

Year列を削除し、生成される論理問合せおよび物理問合せへの影響を分析します。

「年」列の除去後の論理問合せ

これで、論理問合せにYear列が含まれなくなり、さらに重要なこととして、レポート集計が削除されました。

ceal_logical_query_no_year_or_report_agg.jpgの説明が続きます
図ceal_logical_query_no_year_or_report_agg.jpgの説明

「年」列の除去後の物理問合せ

物理問合せは非常に単純になり、グルーピング・セットは含まれなくなって、選択されるレコードの数は大幅に減少しました。

ceal_physical_query_no_grouping.jpgの説明が続きます
図ceal_physical_query_no_grouping.jpgの説明

パフォーマンスの低いレポートの分析を確認して、最初の例で冗長な未使用列を除去するだけで、パフォーマンスを大幅に向上できます。生成される物理問合せの複雑さは低下し、返されるレコード数も減少するため、必要な処理が削減されます。