优化 - 简化SQL查询

时间:2015-11-05 23:07:57

标签: mysql sql

我认为我的查询未经过优化。 你能看到改善的方法吗?

SELECT q_id, q_question, q_userID, q_targetID, q_type,
    (SELECT concat(u_firstname, ' ',u_lastname) from user where u_id = q_userID), 
    (SELECT count(a_id) FROM answer where a_questionId = q_id),
    (SELECT count(a_id) FROM answer where a_questionId = q_id AND a_response = 1)
FROM question INNER JOIN friend ON
    (CASE 
        WHEN q_type = 1 THEN 
            (f_friend_one = q_userID AND f_friend_two = ?) OR
            (f_friend_two = q_userID AND f_friend_one = ?) OR
            (f_friend_one = q_targetID AND f_friend_two = ?) OR
            (f_friend_two = q_targetID AND f_friend_one = ?)
        WHEN q_type = 2 THEN (1 = ( SELECT count(g_id) FROM `group` where g_userID = ? and g_questionID = q_id))
    END)
WHERE f_type = 1 AND (0 = ( SELECT count(a_id) FROM answer where a_userId = ? and a_questionId = q_id)) AND q_archived = 0

0 个答案:

没有答案