此查询以慢查询日志结束,因为没有索引的连接。我添加哪个索引以及在哪里?这个简单的查询需要500毫秒到1,2秒。我想它应该可以在100毫秒内轻松完成。
SELECT users.*, user_roles.apirequests, user_roles.downloadrequests, NOW() AS now
FROM users
INNER JOIN user_roles ON user_roles.id = users.role
WHERE users.rsstoken =
'775e155c780ed5af9119f797f814c714' LIMIT 1;
查看查询并显示创建表:https://kopy.io/iCz1z
答案 0 :(得分:2)
对于此查询:
SELECT u.*, ur.apirequests, ur.downloadrequests, NOW() AS now
FROM users u INNER JOIN
user_roles ur
ON ur.id = u.role
WHERE u.rsstoken = '775e155c780ed5af9119f797f814c714';
最佳索引是users(rsstoken, role)
和user_roles(id)
。您已经拥有第二个索引,因为id
被声明为主键。
您还可以在apirequests
:downloadrequests
的索引中加入user_roles
和user_roles(id, apirequests, downloadrequests)
。这可能是一个非常小的优化 - 我通常会反对它,因为id
已经是主键,行大小很小。