簡體   English   中英

Mysql 5.7 CASE WHEN THEN查詢緩慢

[英]Mysql 5.7 slow CASE WHEN THEN query

我正在使用以下查詢來獲取朋友關系:

SELECT F.friend_one, F.friend_two, F.requested_id, F.status
FROM users U, friends F
WHERE
CASE
WHEN F.friend_one = 2
THEN F.friend_two = U.id
WHEN F.friend_two= 2 
THEN F.friend_one= U.id
END
AND F.status = 1

http://www.9lessons.info/2014/03/facebook-style-friend-request-system.html

表結構

但是,從具有7500條記錄的好友表中選擇結果需要1.5秒。 有辦法解決這個問題嗎? 我不是sql方面的專家。 說明顯示我正在做所有我認為造成麻煩的選擇。

說明

使用unionunion all比使用on子句中的orcase更好。

SELECT F.friend_one, F.friend_two, F.requested_id, F.status
FROM users U JOIN
     friends F
     ON F.status = 1 AND F.friend_one = 2 AND F.friend_two = U.id
UNION ALL
SELECT F.friend_one, F.friend_two, F.requested_id, F.status
FROM users U JOIN
     friends F
     ON F.status = 1 AND F.friend_two = 2 AND F.friend_one= U.id;

您可能還需要索引。 我會推薦friends(status, friend_two, friend_one)friends(status, friend_one, friend_two)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM