VS2003 + SQLserverの環境で収集した測定データを
帳票化するといったソフトを作成しています。
収集したデータはCSV形式のファイルに格納され、1分毎にロギング、
1時間で締められ、最大60件のデータとなります。
(ロギング停止のタイミングでファイルが1つ出来上がります。)
このデータをソフトで取り込む際に、一度DBのワークテーブルに格納します。
その後測定記録用テーブルに格納(INSERTで追加する)する前に
ワークテーブルと重複している日時・時刻があれば、
測定記録用テーブルの対象レコードを削除したいです。
(データの手動取り込みもあり、同時刻のデータも入ってくる可能性があるため。)
SQL構文を考えているのですが、
このような構文でよいものかご意見を伺いたく投稿します。
Common SQL Environment(CSE)を使用し、SQL文を実行したところ、
大体2~4秒くらいで実行終了しますが、30秒近く実行時間がかかることもありました。
- テーブル構成(関連テーブル抜粋)
測定記録用テーブル(SOKUTEI_T) ※データ件数は113万件程度(過去2年分保持)です。
名称 型 長さ
1.HIDUKE_DT varchar 8 NOT NULL [YYYYMMDD形式]
2.HIDUKE_TM varchar 8 NOT NULL [hh:mm:ss形式]
3.RYURYO1 float 8
4.RYURYO2 float 8
インデックス K_SOKUTEI_T ユニークキー
対象フィールド:HIDUKE_DT,HIDUKE_TM
ワークテーブル(SOKUTEI_W) ※最大60レコード(1分データ×60件)
1.HIDUKE_DT varchar 8 NOT NULL [YYYYMMDD形式]
2.HIDUKE_TM varchar 8 NOT NULL [hh:mm:ss形式]
3.RYURYO1 float 8
4.RYURYO2 float 8
インデックス K_SOKUTEI_T ユニークキー
対象フィールド:HIDUKE_DT,HIDUKE_TM
- SQL構文
lang
1DELETE FROM SOKUTEI_T WHERE CONVERT(DATETIME,(HIDUKE_DT + ' ' + HIDUKE_TM)) IN (SELECT CONVERT(DATETIME,(HIDUKE_DT + ' ' + HIDUKE_TM)) FROM SOKUTEI_W)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/05 13:28