beerfroth (原著)
SQL サーバーと asp を使用して簡単なゲストブックを作成しました。何度も試しているうちに、ページ内にメッセージを表示する際の実行方法と時間にいくつかの違いがあることがわかりました。
いくつかの方法の時間を比較して見てみましょう。
まず、ページングにストアド プロシージャを使用します。この状況は 2 つの方法に分けられます。
1 つ目は、次のようにコマンド オブジェクトを使用する方法です。
Set Cmd=server.CreateObject("Adodb.Command")
Cmd.ActiveConnection=conn
Cmd.CommandText="ycuu_gb_getmsg"
Cmd.CommandType=4'adCmdStoredProc
cmd.prepared=true'
set param=Cmd.CreateParameter("@iPageNo",adInteger,1,2,Page)
Cmd.Parameters.Append パラメータ
set param=Cmd.CreateParameter("@iPageSize",adInteger,1,2,PageSizeConst)
Cmd.Parameters.Append パラメータ
set rs=Cmd.execute
2 番目の方法は、次のように接続オブジェクトの実行メソッドを使用して直接実行する方法です:
set rs=conn.execute ("execute ycuu_gb_getmsg "&page&", "&pagesizeConst)
次に、ストアド プロシージャを使用せず、ADODB.RecordSet の関数をページングに直接使用します。具体的なコードは次のとおりです。
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "日付と時刻の説明によるゲストブックの順序から * を選択"
rs.open SQL,conn,1,1
rs.pagesize = 150'各ページに表示されるメッセージの数、
合計 = rs.RecordCount
mypagesize = rs.pagesize
rs.absolutepage = page
速度をより明確に示すために、各ページに表示されるメッセージの数を 150 に増やしました (もちろん、実際にはそれほど大きな値を設定しません)。私のマシンの構成については速度比較が主なので割愛します。
実行時間は次のとおりであることがわかりました。
1 番目のタイプ:0.1953125 秒から 0.2109375 秒の間で安定
しており、平均値は約 0.20 秒です。 2 番目のタイプ: 0.1716875 秒から 0.1857 秒の間で安定しており、平均値は約 0.177 秒です。
3 番目の秒
タイプ: 0.4375 秒から 0.4632 秒の間で安定しており、平均値は約 0.45 秒です。
ただし、読み取られたレコード数が 20 の場合、結果は次のようになります。
実行時間は次のとおりであることがわかりました。
最初のタイプ: 0.0390625 秒から 0.0546875 秒の間で安定、平均値は約 0.045 秒
2 番目のタイプ: 0.046875 秒から 0.0546875 秒の間で安定、平均値は約 はい: 0.050 秒
3 番目のタイプ: 0.09375 秒から 0.1015625 秒の間で安定しています。
この観点から、conn.execute と 2 つのメソッドの間に大きな違いはないようです。コマンドを実行します。
前者の呼び出し方法の方が簡単なようです。
同時に、ストアド プロシージャのページング速度がレコードセットのページング速度よりも実際にはるかに速いことがわかります。
PS: 記事を公開するのは初めてですが、うわー、良い記事を書くのは本当に難しいと思います。今後も頑張ります。今回は私の拙い文章を皆さんに許していただければ幸いです。ところで、皆さんに、conn.execute と command.execute の 2 つの方法のどちらが優れているかをお聞きしたいと思います (笑)。なぜなら、私がインターネット上で見つけたのは後者のストアド プロシージャを実行する方法だけだからです。なぜ以前のようなシンプルなものを使わないのかわかりません。