我已经使用 php 和 mysql 创建了一个网络服务来为我的应用程序插入和返回数据。用户的主要提示之一是响应太慢,我同意这一点,因为它需要 5-10 秒才能完成任务。最初认为这是一个托管性能问题,但没有产生任何影响(godaddy 与 AWS)。
查看我的 php 文件中的 SQL 代码,我认为这就是问题所在。我正在寻找重写以提高速度。我认为问题是我使用了时间戳,返回时我总是寻找 max(timestamp)。
这是我输入的 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')");
使用 UPDATE 或类似方法而不是使用时间戳会更好吗?还有其他建议吗?
最佳答案
这是您的查询:
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
。这应该会提高性能。
关于php - 提高 PHP 和 MySQL 网络服务的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825968/