外部データベースから最速の方法でデータを取得したいと考えています。私の問題は、クエリを作成してすべてのデータを取得し、JSON を使用して必要なものを取得できることです。しかし、より高速な解決策があるかどうか興味があるので、php のすべてのデータを調べてから、必要な適切なデータを見つけて、クエリ全体ではなく JSON にのみ返します。100 万件のうち数百件のレコードが必要な場合、最初のソリューションは遅くなる可能性があります。
これは、ID の場合にユーザー名を検索する .php コードになります。その ID を .php スクリプトに与えるにはどうすればよいですか?
$ID = $_GET['ID'];
try {
$stmt = $conn->prepare("SELECT USERNAME FROM APPUSERS WHERE ID=?");
$stmt -> execute(array($id));
while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$userdata[] = $row;
}
$response = '1';
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
$response = '0';
}
print(json_encode($userdata));
SQL コードの WHERE 部分を削除すると、次のコードでテーブル内のすべてのレコードを取得できます。
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.mywebpage.com/query.php");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
Bresult=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
次に、この Bresult 変数から適切なレコードを取得します。
JSONArray jArray = new JSONArray(ViewPagerActivity.Bresult);
for(int i=0;i<jArray.length();i++){
JSONObject jsonObject = innerJsonArray.getJSONObject(j);
if (jsonObject.getString("ID").equals("12345") {
String user = jsonObject.getString("USERNAME");
}
}
そのため、すべてのレコードを調べてから、必要なユーザー名を取得します。ただし、すべてのレコードではなく、必要なユーザー名のみを取得できれば、これはより高速になると思います。問題は、どうすればそれができるかということです。
前もって感謝します!!