9

インデックスを使用してデータと列名を取得し、サーバーで1日に何百万回もこの操作を実行することについて話している場合、パフォーマンスに違いはありますか?

rs.getString(1)vsrs.getString("columnname");

編集:JDBCバージョンOracleJDBCドライバー10.2.0.4.0

4

2 に答える 2

11

rs.getString(n);検索ではなくコレクションから直接取得するため、パフォーマンスはわずかに速くなります。

あなたのコードの何百人もの将来の読者はrs.getString("columnname");、インデックスが何を参照しているかを見るためにSQLを調べる必要はなく、感謝するでしょnう。

于 2012-12-31T16:56:39.527 に答える
4

それは本当に重要ではありません。データベースへのヒットは、列の値にアクセスするよりも何倍も遅くなります。

rs.getString(n)無視できるほど速くなります。ただし、ドライバーの実装と結果の列数によって異なります。ほとんどの実装では、HashMapを使用して列名をインデックスにマップする可能性がありますが、必ずしもそうとは限りません。また、一部のドライバーはHashMapを遅延して構築する場合があります。これは、最初の行へのアクセスが列名で最も遅くなることを意味します。例として、JTDSは、HashMapにまだ含まれていない列を線形検索します。

編集:マイナーな編集と再配置。コンテンツの変更はありません。

于 2012-12-31T16:59:29.237 に答える