-2

次のクエリが最適化されているかどうかを知りたいですか?

 select 
  SUM(payments.paid_amt) as paid_amt, 
  SUM(payments.copay_amt) as copay_amt,
  SUM(payments.CO_INSURANCE_AMT) as co_ins_amt,
  payor_group.PAYOR_GROUP as payor_group,
  DATEPART(MM,accession.XIFIN_LOAD_DATE) as load_month,
  DATEPART(yyyy,accession.XIFIN_LOAD_DATE) as load_year

  from 
  [F_PAYOR_PAYMENTS_monthly] payments

  join D_PAYOR payor
  on payor.PAYOR_ID=payments.PAYMENT_PAYOR_ID

  join D_PAYOR_GROUP payor_group
  on payor.PAYOR_GROUP_KEY=payor_group.PAYOR_GROUP_KEY

  join F_ACCESSION_DAILY accession
  on accession.ACCESSION_ID=payments.ACCESSION_ID

  group by  payor_group.PAYOR_GROUP, DATEPART(MM,accession.XIFIN_LOAD_DATE),
  DATEPART(yyyy,accession.XIFIN_LOAD_DATE)

現在、約 1.5 時間実行されています。どのテーブルにもまだインデックスがありません!

すべてのテーブルには約 10,000,000 行あります。

このクエリを単純化して実行時間を改善する方法はありますか?

ご指導と時間をありがとうございました。

4

3 に答える 3

1

最初のクエリではaccession.XIFIN_LOAD_DATE、その日付の月/年ではなくグループ化しています。これが、2 番目のグループ化が必要な理由です。それを修正すれば、それはたった1つのクエリです。これによりパフォーマンスが向上するはずですが、インデックスが最大の助けになります。

于 2012-06-15T18:04:07.773 に答える
1

そもそも With を使用する理由

  select 
  SUM(payments.paid_amt) as paid_amt, 
  SUM(payments.copay_amt) as copay_amt,
  SUM(payments.CO_INSURANCE_AMT) as co_ins_amt,
  payor_group.PAYOR_GROUP as payor_group,
  DATEPART(MM,accession.XIFIN_LOAD_DATE) as load_month,
  DATEPART(yyyy,accession.XIFIN_LOAD_DATE) as load_year

  from 
  [F_PAYOR_PAYMENTS_monthly] payments

  join D_PAYOR payor
  on payor.PAYOR_ID=payments.PAYMENT_PAYOR_ID

  join D_PAYOR_GROUP payor_group
  on payor.PAYOR_GROUP_KEY=payor_group.PAYOR_GROUP_KEY

  join F_ACCESSION_MONTHLY accession
  on accession.ACCESSION_ID=payments.ACCESSION_ID

  group by  payor_group.PAYOR_GROUP, DATEPART(MM,accession.XIFIN_LOAD_DATE),
  DATEPART(yyyy,accession.XIFIN_LOAD_DATE)
于 2012-06-15T18:09:41.227 に答える