0

私のデータベースは次のようになります。

id | Column1 | Column2

知っておくべき事実: id はプライマリの一意の ID ではありません (ただし、そうである可能性があります)。id は 2Millions+ まで可能です。列の値は TINYINT で埋められます

var query : String = "SELECT Column1 FROM Table1 WHERE Column1 <> 0";   
dbcmd = dbcon.CreateCommand();
dbcmd.CommandText = query; 
reader = dbcmd.ExecuteReader();
var result : int = 0;
while(reader.Read()) { 
    result++;
}
return result; 

しかし、基本的な検索では最大 5 秒かかりますが、とにかく速くする方法はありますか?

編集: いつものように、貢献者と迅速さに感謝します!

4

3 に答える 3

7

はい、結果を読み取り、1 つずつ処理しています。あなたが必要としているように見えるのは、あなたが得ることができるカウントだけです:

"SELECT COUNT(*) FROM Table1 WHERE Column1 <> 0"; 
于 2013-03-17T16:47:54.013 に答える
2

これは JavaScript コードのようには見えませんが、クエリを実行してクライアントで結果セット全体をループし、変数をインクリメントする代わりに、レコードをカウントしてみることができます。

var query : String = "SELECT Count(Column1) FROM Table1 WHERE Column1 <> 0";

カウント操作はデータベース サーバーによって直接行われるため、これはコードよりもはるかに高速です。

于 2013-03-17T16:47:47.403 に答える
0

はい、WHERE 句で使用される行である Column1 でテーブルにインデックスを付けます。

于 2013-03-17T16:48:10.737 に答える