0

mysql データベースからデータを引き出すために使用する次のクエリがあります。

SELECT ProductCode, ProductName, ProductCategory
   FROM Product
      WHERE <<Criteria goes here>>

クエリによって返されたデータは .NET アプリケーションによって消費され、DataReader を介して 1 つずつ通過する 100 万行を取得しています。

ここで、進行状況バーを表示して、何パーセントの行が受信されたかをユーザーに知らせる必要があります。つまり、合計数が必要です

友人は、追加の列として COUNT(*) を追加することを提案しました。これには繰り返し番号が含まれますが、1 つはカウントを取得するため、もう 1 つは行を取得するために 2 回往復する必要はありません。

SELECT ProductCode, ProductName, ProductCategory, COUNT(*)
   FROM Product
      WHERE <<Criteria goes here>>

COUNT(*) を追加すると、mysql は 1 つのレコードのみを返します。2 つ目は、これが良いアイデアかどうかはわかりません。

これについて知っていることを共有してください ありがとう

4

3 に答える 3

1

回答セットが完全に作成される前に、DBMS がクライアントに行を返し始める場合があります。その場合、100% 正しい値を取得する唯一の方法は、select を

SELECT COUNT(*) FROM (your query) x;

クエリを実行する前、または count をウィンドウ関数として使用する前に、これは MySQL ではサポートされていません。

SELECT ProductCode, ProductName, ProductCategory, COUNT(*) OVER () 
   FROM Product
      WHERE <<Criteria goes here>>
于 2013-09-18T19:18:47.773 に答える
0

取得したレコードを にロードしていると仮定するとDataTable、プロパティをチェックして、所有しているレコードの数を確認しDataTable.Rows.Count()てください。

于 2013-09-18T19:37:47.683 に答える