[英]How to optimize SQL query more?
First at all i am nood into SQL thing, Now i am working on a class project where I have some tables like 首先,我非常喜欢SQL,现在我正在一个类项目中,其中有一些表
Table user 表用户
user_id | username | name
1 | nihan | Nihan Dip
2 | dip | Meaw ghew
more | more | more
Table Friend 表友
you | friend_id
1 | 2
1 | 27
2 | 9
more | more
Table Follow 表跟随
user_id | follows
1 | 99
7 | 34
Table post 表帖
post_id | user_id | type | content | post_time
1 | 1 | text | loren toren | timestamp
2 | 2 | text | ipsum | timestamp
Now i want to get post by users friend and who he follows and offcourse his so i made this SQL 现在我想由用户朋友和他关注的人以及他的追随者发帖,所以我做了这个SQL
SELECT
username, name,content, post_time
FROM
post
INNER JOIN
user ON user.user_id = post.user_id
WHERE
post.user_id IN (SELECT
friend_id
FROM
friend
WHERE
you = 1
UNION ALL
SELECT
follows
FROM
follow
WHERE
user_id = 1)
OR post.user_id = 1
ORDER BY post_time DESC
LIMIT 10
this query works just fine. 该查询工作正常。 I just wanted to know is there anymore optimization could be done?
我只是想知道是否可以进行优化了? Then how?
那怎么办 Please teach me :)
请教我 :)
Instead of using IN
try it with JOIN
add add few more indexes . 而不是使用
IN
尝试与JOIN
添加添加更多的索引 。
SELECT DISTINCT u.name, u.username,
p.content, p.post_time
FROM post p
INNER JOIN user u
ON u.user_id = p.user_id
INNER JOIN
(
SELECT friend_id id
FROM friend
WHERE you = 1
UNION ALL
SELECT follows id
FROM follow
WHERE user_id = 1
) s ON p.user_id = s.ID
ORDER BY post_time DESC
LIMIT 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.