目前我正在开发一个项目,需要我为我的用户编写一个API。到目前为止,我写了下面的SQL语句和测试它在我的本地在我的PHP:对于另一个mysql版本,SQL查询执行速度较慢?
SELECT topquery.kind_id,
topquery.image,
topquery.id,
userquery.user_name
FROM `order` AS topquery,
`user` AS userquery
WHERE userquery.user_id = topquery.user_id
AND topquery.id IN
(SELECT MIN(id)
FROM `order` AS mainquery
WHERE user_id != '$vUserId'
AND id NOT IN
(SELECT order_id
FROM history
WHERE user_id = '$vUserId')
AND kind_id NOT IN
(SELECT o.kind_id
FROM history h
INNER JOIN `order` o ON h.order_id = o.id
WHERE h.user_id = '$vUserId')
AND actions > 0
AND kind = '1'
GROUP BY kind_id)
ORDER BY vip DESC
LIMIT 35
此查询需要在我的本地约0.5秒,并采取〜1.4秒我的服务器上。
现在我的问题: 有没有可能是SQL查询的速度可以为每个MySQL版本有什么不同? 或者我的查询不够“优化”了吗?
你尝试检查此查询与解释(当地生产ENVS)? – Neodan
速度在不同系统上变化的原因有很多。它可能是软件版本,MySQL服务器配置,RAM大小/ spped,CPU,磁盘速度,操作系统,数据大小等。我们不可能缩小它,绝对没有关于这些事情的信息(即使这样很难)。 –