我不是 MySQL 的家伙,实际上我这样做是为了帮助朋友。 我将这些表放在 MySQL 数据库中:
create table post (ID bigint, p text)
create table user (ID bigint, user_id bigint)
我正在通过这个脚本查询它们:
select * from post
where ID in (select user_id from user where ID = 50)
order by ID DESC --this line kills performance.
limit 0,20
正如我在评论中提到的,当没有order by ID DESC
时,查询执行速度非常快。但是当我将它添加到查询中时,由于CPU使用率很高,因此速度非常慢。你知道我做错了什么吗?
答案 0 :(得分:2)
您应该将ID定义为表的主键。这将添加索引并提高性能。至少作为第一步,它是一个好的。
此查询应该可以解决问题:
create table post (
ID bigint,
p text,
PRIMARY KEY (ID));
答案 1 :(得分:0)
感谢@frlan,问题通过索引解决了:
CREATE INDEX IDX_POST_ID ON post (ID);
CREATE INDEX IDX_USER_ID ON user (ID);
CREATE INDEX IDX_USER_USERID ON user (user_id);