1. ホーム
  2. Web プログラミング
  3. ASP プログラミング
  4. アプリケーションのヒント

提案内容を改善するために、データベースを実行するaspプログラムの効率化

2022-01-16 17:29:36

多くのユーザーはASPでのプログラミングを嫌い、ASPのプログラムは遅くて効率が悪いといつも文句を言っています。彼らはプログラムを書くためにPHPやJSPなどを使うことを好みます。実際には、"考える "の観点から問題を見ることはできませんが、実際からの問題を見る必要があります、ASPは本当に遅いので、なぜASPとMicrosoftの駅は遅くない、PHPは本当に速い、実際には、それはまだ説明の言語でもある。JSPの開発は、どこに簡単ではありませんし、JDBC - ODBCブリッジをACCESSライブラリなどを接続するために渡すには、このケースはまた、効率的ではありません。 

実は、この3つの言語にはそれぞれ特徴があり、つまりメリットとデメリットがあるのです。プログラマは、常に言語が悪いと非難すべきではないとして、より自分のスキルを見てください。そこで今日は、この3つのWEB言語について、誰が良くて誰が悪いかを比較するのではなく、プログラムの実行効率を上げる方法を説明します。 

その1.SQL文 

  WEBプログラムで最も説得力があるのは、データベース操作の部分であるはずです。今日は、SQL文の効率を上げる方法についてお話します。IDを主キーとする次のような構造のユーザーテーブルがあるとします。すでに1万件のレコードがあります。 

ID int 4 自己インクリメント 
名前 char 10 //名前 
年齢 int 2 //年齢 
Sex char 2 //性別 デフォルト値は "男性" 
アドレス nvchar 255 //アドレス 
キャッシュ int 4 //ポイント 
Photo char 2 //写真を持っていない デフォルト値は "no "です。 
PhotoUrl nvchar 255 //写真のパス    

   WEBデータベースオブジェクトの場合、テーブルの数は少ないほどよく、フィールドの数は少ないほどよく、フィールドが占有するバイト数は少ないほどよいです。  {ということです。
  たとえば、ユーザーテーブルの性別のフィールドは、完全にビットフィールド、0または1の操作のためにすることができます、あなたは "0 "男性用、および "1 "女性のために定義することができるので、文字によって占有されるバイトの数を減らすことができますレコードたくさんまたはかなり実質的。 
  もう一つの例は、テーブルの写真フィールドを一切削除することで、フィールド数を減らし、その結果、読み込み速度を速めることができる。なぜなら、Photoフィールドはユーザーが写真を持っているかどうかを判断するためにのみ使用され、その判断にはPhotoUrlフィールドを安全に使用することができるためです。PhotoUrlフィールドの値が空であれば、このユーザーは写真を持っていないことを意味し、そうでなければ、写真を持っていればPhotoUrlフィールドに値があるはずで、それに応じて同じ機能を実行すればよいのです。 
例えば、ユーザー名の上位10名の記録を表示したいとします。あるユーザーは次のようにします。  

I=0 
Set rs=conn.execute("select * from users") 
Do while not rs.eof and I<=10 
I=I+1 
Response.write("name")&"<br>" 
Rs.movenext 
Loop 

  このコードでも上記の機能は実現できますが、本当にプログラムに落とし込むとなると効率が悪すぎます。これを実現するには、Ms SQLのtopコマンドか、Mysqlのlimitコマンドを使えばいい。 

また、表示させるフィールドはユーザー名だけで、他は全く必要ないのですが、このユーザーは「select *」というコマンドで全てのフィールドの値を一度に読み込んでいたので、非常に不要であり、フィールド数が多い場合には、実行の負担が増えることになりました。そこで、"select fields "を使って、対応する操作を行うようにする。そこで、上記のプログラムは次のように修正することができます。 

set rs=conn.execute("select top 10 name from users") 
do while not rs.eof 
response.write rs("name")&"<br>" 
rs.movenext 
loop 

この場合、レコード数が多いと動作がかなり速くなります。 
また、操作終了後、操作が不要になった場合は、必ずデータベース接続を終了してください。 

rs=何も設定しない 
connを設定する=何もしない 

何人かの方は、そういうことなら、その方は以下のコードでUsersテーブルを表示することができますね。 

Set rs=conn.execute("select name from users") 
I=0 
Do while not rs.eof 
I=I+1 
Rs.movenext 
loop 
set rs=nothing

実は、このコードはまだ非常に非効率的です。テーブルの行数を知るために、すべての行を繰り返し処理するのは非常に無駄なことです。次のコードでも全く同じことができます。  

set rs=conn.execute("select count(id) as num from users") 
I=rs("num") 
セット rs=nothing  

簡単でしょう?実は、count()コマンドでクエリしたいレコードの数を数えることができますし、whereで条件を追加することもできます。 
ユーザーが一度にデータベース上でいくつかの操作を実行したい場合、我々はまた、あるユーザーがデータベースを操作していると別のユーザーもそれを操作している場合、データに混乱を引き起こすことが容易であり、あるいは間違ったレコード番号にデータを挿入させる、非常に深刻な結果をもたらすので、ロック解除を使用して、操作が完了した後にテーブルをロックすることに注意を払う必要があります。 
ASPの運用では、データベース操作の方法として、conn.executeのストリームを直接参照する方法と、rs.openの操作を利用する方法がある。両方の操作は、それぞれの利点があり、MS SQLの操作では、前者がより使用され、それは操作の単一のストリームであるため、一般的にrs.addnewまたはrs.updateなどを使用することはできません、そのような操作は、書き込み操作にテーブルを開くために、rs.open sql,conn,3,3などの後、あなたは書き込み操作を行うことを意味し、1はそれが読み取りであるということ次の3は書き込み操作を実行できることを示して、1では読み取りの操作を示しています。 
最後に、複数の文を組み合わせて、できるだけ多くのwhere条件を使用することです。例えば、男性ユーザーの上位10名をポイント順に表示する。 

あるユーザーの次のコードを見てください。 

set rs=conn.execute("select * from users order by cash desc") 
I=0 
If I<=10 and not rs.eof then 
If rs("sex")='male' then 
Response.write rs("name")&"<br>" 
I=I+1 
End if 
Rs.movenext 
End if 
Set rs=nothing 

このコードでも上記の作業は可能であるが、効率が悪すぎるし、データベースから読み込んだ文章を一回ずつ判定しなければならない。性別の判定はwhere文の中に入れることができる。 

set rs=conn.execute("select top 10 name from users where sex='male' order by cash desc") 
do while not rs.eof 
response.write rs("name")&"<br>" 
rs.movenext 
loop 
set rs=nothing 

上記のtopコマンド、selectフィールド名、where条件を追加することで、プログラムコードを削減できるだけでなく、プログラムの実行効率も大幅に向上します。 
  実は、SQL言語の効率を上げる方法は他にもたくさんあるのですが、初心者や中級者の友人がよく遭遇し、気にも留めないところが、このようなところです。もっと勉強して、心を開いて、実践から経験を積み重ねられるといいですね!

この記事は、aspプログラムの実行データベースの効率化について紹介されています、より関連するaspデータベースの効率化の内容は、BinaryDevelopの過去の記事を検索してくださいまたは、次の関連記事を閲覧し続けるあなたは、将来的にもっとBinaryDevelopをサポートすることを願っています