0

外部データベースから最速の方法でデータを取得したいと考えています。私の問題は、クエリを作成してすべてのデータを取得し、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");
  }
}

そのため、すべてのレコードを調べてから、必要なユーザー名を取得します。ただし、すべてのレコードではなく、必要なユーザー名のみを取得できれば、これはより高速になると思います。問題は、どうすればそれができるかということです。

前もって感謝します!!

4

0 に答える 0