Microsoft Access 掲示板

イベント型データの並び替え / 14

24 コメント
views
4 フォロー
14
りんご 2021/06/22 (火) 00:21:18 c564b@0e907

>> 13
テーブルのEVENTとE_Timeに複合主キーを設定して、再度チャレンジしてみたら、だいたい5秒で処理出来てしまったのだが、うーん、これはありなのだろうか?

通報 ...
  • 16

    テーブルのEVENTとE_Timeに複合主キーを設定して、
    再度チャレンジしてみたら、だいたい5秒で処理出来てしまったのだが、
    うーん、これはありなのだろうか?

    ありでしょう。
    実際かなりの高速化が見込めるでしょうし、素晴らしいチューニングだと思います。

    私がインデックスや主キーの設定を施さなかったのは
    フィールドのグルーピングや抽出条件に指定するフィールドの順番が
    回答者によって異なっていたため、
    特定の手法だけベンチマークに有利な影響を及ぼす設定では
    アルゴリズムの比較にならない、という理由です。

    ただ、処理時間が本当に5秒へ縮小されたかというと...疑問符が付きます。
    というのも
    定義域集計関数を使ったクエリの場合、データシートビューの表示において
    「目視できている」部分のレコードしか各行の演算が済んでいない
    ということがあります。

    つまり、
    「 クエリのデータをデータシートビューで閲覧可能、且つUIの操作も可能 」
    という状態であっても
    全行の処理が終わっているとは限らないんです。
     

    SELECT EVENT
         , E_Time
         , CDate(
               DMin( "E_Time", "表1"
                   , "EVENT = '" & [EVENT] & "' And E_Time > #" & [E_Time] & "#"
               )
           ) As E_END
         , DateDiff( 's', E_Time, E_END ) As DURATION
    FROM 表1
    WHERE E_Cond = 'START' ;
    

     
    この SQL に名前を付け、クエリとして保存した後に
    クエリを右クリックして表示されるコンテキストメニューから
    テキストファイルにでもデータをエクスポートしてみることをお薦めします。

    クエリを開くために要した時間は数秒程度と短いのに
    データのエクスポートを実施した途端、
    ファイル書き出しのオーバーヘッドが多少はあるにしろ
    異常なくらい長い時間を要する

    ということが実感できると思います。