|  | 分類:[.NET 全般]
 
 以下のようにテストプログラムを作ってみたのですが、
 本番ではデータ数が多く時間がすごくかかりました。
 時間のかからない方法ってありますか?
 
 DECLARE	@TBL1 TABLE (
 MDATE	DATETIME,
 MNAME	VARCHAR(10)
 )
 
 INSERT	INTO @TBL1
 SELECT	'2020-07-02 00:00:00.000', 'N-1'
 UNION SELECT	'2020-07-03 00:00:00.000', 'N-2'
 
 DECLARE	@TBL2 TABLE (
 MNAME	VARCHAR(10),
 RNUM	INT
 )
 
 INSERT	INTO @TBL2
 SELECT	'N-1', 6
 UNION SELECT 'N-2', 7
 
 DECLARE	@TBL3 TABLE (
 MDATE	DATETIME
 )
 
 --土日祝を除く日付(カレンダー)
 INSERT	INTO @TBL3
 SELECT	'2020-07-01'
 UNION SELECT	'2020-07-02'
 UNION SELECT	'2020-07-05'
 UNION SELECT	'2020-07-06'
 UNION SELECT	'2020-07-07'
 UNION SELECT	'2020-07-08'
 UNION SELECT	'2020-07-09'
 UNION SELECT	'2020-07-10'
 UNION SELECT	'2020-07-13'
 
 SELECT	*
 FROM	(
 SELECT	 TBL1.MDATE, TBL1.MNAME, TBL2.RNUM, TBL3.MDATE AS GETDAT, ROW_NUMBER() OVER(PARTITION BY TBL1.MNAME ORDER BY TBL3.MDATE) AS RNO
 FROM  @TBL1 AS TBL1
 LEFT  OUTER JOIN (
 SELECT	*
 FROM	@TBL2
 ) AS TBL2
 ON TBL2.MNAME = TBL1.MNAME
 LEFT  OUTER JOIN (
 SELECT	*
 FROM	@TBL3
 ) AS TBL3
 ON TBL3.MDATE > TBL1.MDATE
 ) AS TBL
 WHERE	RNUM = TBL.RNO
 
 
 
 
 |