2012-01-19 6 views
1

私はdbからページネーションを実行しようとしていますが、これまでに制限を使用する場合はSQL_CALC_FOUND_ROWSを使用する必要があります。Java、prepareStatement、SQL_CALC_FOUND_ROWS、FoundRows()はうまく動作します

しかし、Javaではこれを呼び出す方法を理解する上で問題があります。

私は1つのprepareStatementでそれを実行できますか、複数回コールする必要がありますか?複数の呼び出しを行っている場合、MySQLは最後の呼び出しをどのように参照しているのですか?

ありがとうございました。

+0

達成したいことを教えてください。 SQLクエリでlimit句を使用しますか? –

答えて

0

制限付きの結果セットとカウントを返すdbにいくつかのストアド関数を実装しない限り、2回コールする必要があります(mysqlでは可能ですが、試したことはありません)。

制限付きのクエリとSELECT FOUND_ROWS();の両方が同じセッションに含まれるため、MySQLは返すクエリの数を知ります。

+0

'found_rows'が別のクエリに関連付けられる危険性はありませんか?(例:2つのクエリが直後に呼び出された場合など) 'ps = connection.prepareStatement(originalQuery)'を呼び出して結果セットを処理し、 'ps = connection.prepareStatement(totalRowsQuery)'を呼び出して結果セットを処理します。元のクエリを処理しているときに同じセッションでクエリが呼び出されるリスクはありますか? – theyuv

関連する問題