2016-07-22 7 views
1

javaのデータベースから特定の値を取得したい。私は準備された声明の中で次のコマンドを使用:javaからデータベースへの特定の値のフェッチ時間を増やすにはどうすればよいですか?

Select Pname from table where pid=458; 

テーブルの周りに50,000行が含まれており、フェッチするより多くの時間を割いて、私はより高速なデータを取得するために助けてください。

インデックスを使用して変数をバインドしますが、実行時間が数秒しか短縮されません。より効率的です。より速くデータを検索する方法はありますか?

+1

どのデータベースを使用していますか –

+0

私はSQLサーバー – karthik

答えて

4

データベーステーブルにpidをインデックスすると、検索が高速になります。

インデックスは、データベーステーブルにアクセスするたびに、データベーステーブルのすべての行を検索することなく、データをすばやく検索するために使用されます。データベーステーブルの1つ以上の列を使用して索引を作成し、迅速なランダム検索と順序付けられたレコードへの効率的なアクセスの両方の基礎を提供することができます。

SQL Serverの

CREATE TABLE MyCustomers (CustID int, CompanyName nvarchar(50)); 

CREATE UNIQUE INDEX idxCustId ON MyCustomers (CustId); 

参照

https://msdn.microsoft.com/en-us/library/ms188783.aspx

https://technet.microsoft.com/en-us/library/ms345331(v=sql.110).aspx

+0

を使用していますか? – karthik

+0

@pandian - 例と参考文献をご覧ください。 –

+0

私はインデックスを使用して、私も変数をバインドしますが、それは数秒しか実行時間を短縮する、私はより効率的にする必要があります。より速くデータを検索する方法はありますか? – karthik

1
  1. あなたのテーブルのフィールドPIDにインデックスを作成します。
  2. クエリでバインド変数を使用します。

Javaでステートメントの代わりにprepared statementを使用し、バインド変数を使用します。 pstatement = conn.prepareStatement( "テーブルからPnameを選択するにはどこのpid =?");

これにより、SQlがあらかじめコンパイルされているため、より速く実行されます。

ただし、索引によるパフォーマンスの向上は、バインド変数よりも高くなる可能性があります。

+0

例を共有してください – karthik

+0

私はOracle DBを使用していますが、索引を作成する一般的な構文は 'CREATE INDEX index_name on your_tbl(pid ASC)'です。SQL Serverのドキュメントを参照してください。索引を作成した後は、単に問合せを実行するだけで、データを高速にフェッチする必要があります。 – nilsman

+0

私はインデックスを使用して、私も変数をバインドしますが、それは実行時間を数秒短縮します。私はより効率的にする必要があります。より速くデータを検索する方法はありますか? – karthik

関連する問題