从webservice和mysql查询多个数据的最佳方法?

时间:2014-12-09 15:12:35

标签: java android mysql web-services rest

我有一个Android应用程序,它使用java rest api,它从mysql数据库中获取数据。

打开应用程序后,我会下载一些项目列表。然后,我再发出5个请求来休息api以获取其他连接资源,所以:

首先,我下载商店列表。 然后,有了这些商店ID,我发出5个http请求来休息api,它从(mysql)获取照片列表(不是实际图像,只是网址和ID),评级,开放时间和2个以上的东西

这会产生6次api(和db)调用,这需要很长时间。 有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

您可以将多个查询重写为一个JOIN,并在单个网络往返中获取它们。

确保您了解花费的时间和原因。如果您有WHERE子句不使用索引,您的查询可能会很慢。运行EXPLAIN PLAN,看看是否有正在执行的TABLE SCAN。如果您看到一个,则可以通过在WHERE子句中的列上添加适当的索引来立即提高性能。

答案 1 :(得分:1)

为什么不在第一次通话中检索所有这些数据? restapi的反应可以是json或xml。

REQUEST: GET /shop/list

RESPONSE XML:
<shops>
  <shop name="shop1" img="../../img1.jpg" ></shop>
  <shop name="shop2" img="../../img2.jpg" ></shop>
  <shop name="shop3" img="../../img3.jpg" ></shop>
</shops>

RESPONSE JSON:
[{name:"shop1",img:"../../img1.jpg"},
{name:"shop2",img:"../../img2.jpg"},
{name:"shop3",img:"../../img3.jpg"}]

您可以在Java / Android应用程序中处理这些响应