関数 :
create function .[data_by_date_district](@rev_datetime datetime)
returns table
as
return
(
SELECT
ro.Region,[DATETIME],
sum(datain) 'datain',
sum(dataout) 'dataout'
FROM
data.inoutdata cr
join
structure.site ro on
ro.site = substring(replace([siteunqid],'**',''),1,LEN(siteunqid)-1)
where [DATETIME] =@rev_datetime
group by Region,[DATETIME]
);
この関数を任意の日付で実行すると、00:00:00 になります。
これを別のテーブルに結合すると、4秒かかります(このテーブルは75行です):
SELECT
Region,[DATETIME],datain,dataout,(cr.datain+cr.dataout) 'total',SP_GEOMETRY,MI_STYLE,MI_PRINX
FROM
data.data_by_date_district(DATEADD(DAY,-1,cast(GETDATE() as DATE)) ) cr
join
datamap.VectorMaps.REGION_BND db
on db.Name = cr.Region
最初のテーブルには 1,700,000 行のデータがあり、毎日 170,000 ずつ増加しますが、他のテーブルには 75 行しかありません。クエリ時間を短縮する方法はありますか? 関数の結果は 75 行です。