我已经创建了一个web服务,使用php和mysql为我的应用程序插入和返回数据。用户的主要抱怨之一是反应太慢,我同意,因为完成任务需要5-10秒。最初认为这是一个主机性能问题,但并没有产生什么影响(godaddy )。
查看我的php文件中的SQL代码,我认为这就是问题所在。我想重写一下以提高速度。我相信问题是我使用时间戳,为了返回,我总是寻找最大(时间戳)。
下面是我输入的SQL语句:
$insert = mysql_query("INSERT INTO meals (user, date, meal, timeStamp, food) VALUES ('$user','$date','$meal','$timeStamp','$food')");以下是我返回的SQL语句:
$query = mysql_query ("SELECT * FROM meals WHERE user = '$user' AND date = '$date' AND meal = '$meal' AND timeStamp = (SELECT MAX(`timeStamp`)FROM meals WHERE user = '$user' AND date = '$date' AND meal = '$meal')");我会更好地使用一个更新或类似的,而不是使用时间戳?还有其他建议吗?
发布于 2013-12-29 14:25:46
这是您的查询:
SELECT *
FROM meals
WHERE user = '$user' AND date = '$date' AND meal = '$meal' AND
timeStamp = (SELECT MAX(`timeStamp`)
FROM meals
WHERE user = '$user' AND date = '$date' AND meal = '$meal'
);假设您只想要一行,第一个简化步骤是:
SELECT *
FROM meals
WHERE user = '$user' AND date = '$date' AND meal = '$meal'
ORDER BY timestamp desc
LIMIT 1;接下来,索引将有助于此查询。事实上,meals(user, date, meal, timestamp)上的索引可以同时适用于where和order by。这应该能改善业绩。
https://stackoverflow.com/questions/20825968
复制相似问题