2016-09-10 14 views
0

私はTableau Dashboardに6ヶ月のデータを表示する必要があります。そのために、3つのテーブルT1、T2、およびT3に結合されたビューをSQLサーバーに作成しました。各テーブルには2,000万レコードがあり、その数は増え続けます。問題は、クエリを実行すると2時間ほどかかり、ダッシュボードに何も表示されないということです。クエリのパフォーマンスを向上させる方法はありますか?SQL Server、tableau dahsboards

Follwingは、ビューを作成するためのクエリです。 T1、T2、T3は3つのテーブルであり、T1におけるtrackingIdentifierはtransmissionTIDとしてT3の外部キーであり、T2における trackingIdentifierがclaimSubmissionTIDとしてT3の外部キーであり、

インデックスがtrackingIdentifier、transmissionTID、trackingIdentifier上に構築されています。

RAM:32768メガバイト プロセッサ:32 SQLバージョン:11.0.3381.0あなたが右に参加する必要があり

Create View [dbo].[claimReceivingDashboard] AS 
(
Select 
    trans.trackingIdentifier as trackingIdentifier, 
    trans.receiptdt as downloadDate, 
    trans.transactiondate as TransactionDate, 
    trans.purpose as Purpose , 
    trans.recordCount as RecordCount , 
    cast(acv.activityNet as decimal(12,4)) as Net, 
    d.Caption as DispositionID , 
    trans.SenderID as SenderId , 
    trans.transmissionfilename as filename , 
    trans.damaninscomp as ReceiverID, 
    claim.claimid as claimid , 
    claim.claimproviderid as providerid , 
    claim.trackingIdentifier as claimTrackingId 
from 
    endisposition d , t1 trans , t2 acv, t3 claim 
where 
    claim.dispositionId = d.EnumId 
    and trans.trackingIdentifier = acv.transmissionTID 
    and claim.trackingIdentifier = acv.claimsubmissionTID 
    and cast(t1.transationdate as date) > cast(Getdate() - 120 as date)) 

GO 

答えて

0

がendisposition dを、T1、T2と以下t3の間属性であるサンプル

endisposition d inner join t1 trans 
on d.joiningcolumn = trans.joiningcolumn 
inner join t2 acv 
on trans.trackingidentifier = acv.transmissionid 
inner<<left depends on the requirement>> join t3 claim 
on acv.claimsubmissionid = claim.trackingidentifier 
where condition 

可変キャスト(Getdate() - 日付は120)でこれを計算して条件を避けることができます)

これらの結合条件適切に索引付けされていない実行計画を見て索引を作成する

関連する問題