お世話になります。
VB6.0 SP5を使用しております。
SQLServerで
現在更新中のテーブルから必要なデータを抽出するときと、
同構造で更新なしのテーブルから抽出するときでは、
更新なしテーブルの方が時間がかかるのは何故なのでしょうか。
レコード数は、更新中テーブルが多いのですが...。
同じSQLを発行していて、
かつ更新中テーブルのほうが取得されるデータが多いと仮定すると、
インデックス等の違いかと思われますが。
違うSQLを発行している、
またはレコード数は多いが、HITするデータ数が更新中テーブルのほうが
少ないとすると、
それは当然としかいいようがないですね。
『現在更新中』『更新なし』という意味がいまいちピンときませんので、
これくらいしか言えません。
raki様、御回答ありがとうございます。
更新中:当月のデータテーブル
更新なし:過去月のデータテーブル
月が変わる度に、
別テーブルを作成し一月分のデータを保存しています。
インデックスは同じです。
あと、Hitするデータ数もほとんど同じでした。
なのに、速度は極端に遅くなるのです。
> 現在更新中のテーブルから必要なデータを抽出するときと、
> 同構造で更新なしのテーブルから抽出するときでは、
> 更新中:当月のデータテーブル
> 更新なし:過去月のデータテーブル
まず「更新中のテーブル」と「更新なしのテーブル」の意味が判りかねます。
> テーブルから抽出
SELECTするということですよね?
SQL文くらい、記載しても良いのでは?
raki様
申し訳御座いません、インデックスが違っていました。
解決致しました。ありがとう御座いました。
java.lang.Nullpo様
説明が悪くて本当に申し訳御座いません。
更新中テーブルとは現在の月のデータが随時入ってくるテーブルのことで、
更新なしテーブルは過去の月のデータを一月毎格納しているテーブルのことでした。
SQL文は以下のとおりです。
SELECT 日時,Data1,Data2 From " & sTable & _
" WHERE ((AName='" & AName(I) & "') " & _
"AND (GNo= 1 ) " & _
"AND (日時 <= '" & DateT & "' AND 日時 >= '" & DateE & "') " & _
"AND (DATEDIFF(second, 日時, CONVERT(DATETIME, '" & DateT & "', 102)) % abs(" & pvDataInterval2 & ") = 0)) " & _
"ORDER BY 日時 DESC;
「sTable」に現在月のテーブルか過去月のテーブル名を入れていました。
SQL文を記載したものかどうか悩んだのですが、テーブル名が違うだけだったので載せておりませんでした。御面倒をおかけ致しました。
お蔭様で解決致しました。ありがとう御座いました。
ツイート | ![]() |