我创建了一个REST API来处理搜索目录应用程序的基本休息功能。用户可以通过POST提交搜索查询,并将查询提交给MYSQL表。这会得到处理,结果会在一小时后通过Feed通过单独的应用程序发送。 我遇到的问题是,有几个用户可以提交数千个查询和GET来为用户检索这些查询,向DB提出简单请求,但需要很长时间来制定响应。当响应是单个字符串查询的简单列表时,它在几秒钟内完美地工作。现在,响应将每个查询包含在自己的json对象中,并包含其他元数据,并检索完整的对象数组。我知道它不应该花这么长时间,所以也许有关如何创建json的想法可能有所帮助。
while (rs.next()){
iquery = new Query();
if (rs.isBeforeFirst() ) {
System.out.println("No data");
qExists = "";
}
System.out.println(rs.getString(1));
QueryList.add(rs.getString(2));
query.setqueryRule(rs.getString(2));
query.setqueryName(rs.getString(1));
if(rs.getTimestamp(5) != null){
query.setqueryExpiration(rs.getTimestamp(5));
}else {
Thread.sleep(100);
}
query.setqueryID(rs.getString(3));
query.setqueryGUD(rs.getString(4));
query.setqueryCreated(rs.getTimestamp(6));
if(rs.getTimestamp(7) != null){
query.setqueryModified(rs.getTimestamp(7));
}else {
Thread.sleep(100);
}
query.toString();
QueryList.add(query);
}
GreetingController.ResponseID = 1;
return QueryList;
类Query但它具有我设置的所有这些不同的属性,如图所示。但由于某些原因,50000个查询需要很长时间才能作为示例。我在下面显示单个查询所需的示例响应;
"queries":[
{
"rule":"apple",
"id":"y56473",
"gid":"5bfufiddsd",
"description":"apple's latest sneak peeks",
"created":"2016-02-15T19:43:34Z",
"modified":"2016-02-15T19:43:34Z",
"expires":"2016-06-13T19:43:34Z"
},
任何想法都赞赏。
修改
MYSQL响应时间:
我运行了数据库查询,它实际上就像1-2秒。
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'SIMPLE', 'f', 'ref', 'idx_', '4', 'const', '15727', 'Using where'
'1', 'SIMPLE', 'd', 'const', 'PRIMARY', 'PRIMARY', '4', 'const', '1', 'Using index'