2013-03-11 43 views
0

我有這個疑問:我應該把索引放在什麼上的MySql?

SELECT Concat(f.name, ' ', f.parent_names) AS FullName, 
     stts.name       AS 'Status', 
     u.name        AS Unit, 
     city.name       AS City, 
     (SELECT Group_concat(c.mobile1) 
     FROM contacts c 
     WHERE c.id = f.husband_id 
       OR c.id = f.wife_id)  AS MobilePhones, 
     f.phone        AS HomePhone, 
     f.contact_initiation_date   AS InitDate, 
     f.status_change_date    AS StatusChangeDate, 
     cmt.created_at      AS CommentDate, 
     cmt.comment       AS LastComment, 
     f.reconnection_date     AS ReconnectionDate, 
     (SELECT Group_concat(t.name, ' ') 
     FROM taggings tgs 
       JOIN tags t 
       ON tgs.tag_id = t.id 
     WHERE tgs.taggable_type = 'family' 
       AND tgs.taggable_id = f.id) AS HandlingStatus 
FROM families f 
     JOIN categories stts 
     ON f.family_status_cat_id = stts.id 
     JOIN units u 
     ON f.unit_id = u.id 
     JOIN categories city 
     ON f.main_city_cat_id = city.id 
     LEFT JOIN comments cmt 
       ON f.last_comment_id = cmt.id 
WHERE 1 = 0 
     OR (u.is_busy = 1) 
     OR (f.family_status_cat_id = 1423) 
     OR (f.family_status_cat_id = 1422 
      AND f.status_change_date BETWEEN '2011-03-21' AND '2012-03-13') 

我的問題是非常具體的。它是關於該行:

SELECT GROUP_CONCAT(c.mobile1) 
    FROM contacts c 
    WHERE c.id = f.husband_id 
    OR c.id = f.wife_id 
    ) AS MobilePhones 

當我使用EXPLAIN時,似乎這個查詢是不好的。我得到這張表(c = contacts):38307行。 根據查詢,應該在哪些列上放置索引? 我嘗試了mobile1 - 但沒有改進(BTW - family_id在聯繫人表中編入索引)。

我附上解釋結果的圖像: EXPLAIN

或者,也許有人可以幫我優化查詢...

+0

該ID的表現。如果他們是鑰匙,他們已經被索引。您的圖片太小,無法閱讀。 – mawburn 2013-03-11 15:13:10

+0

@coderseven我不會說它太小而不能閱讀,但它在眼睛上很痛 – 2013-03-11 15:14:15

+0

@LloydBanks http://i.stack.imgur.com/8bSXn.png它實際上更大。 – mawburn 2013-03-11 15:15:03

回答

0

任何列你會被搜索上,以加快這一進程。請記住,鍵已被編入索引。

0

嗯,似乎使用GROUP_CONCAT是問題。 我剛分手的妻子和丈夫是2個不同的列。 首先,我認爲使用GROUP_CONCAT會更快,但它被證明是非常錯誤的。

0

只是出於我的好奇心,什麼是查詢

SELECT GROUP_CONCAT(c.mobile1) 
    FROM contacts c 
    WHERE c.id IN(f.husband_id, f.wife_id) 
    ) AS MobilePhones 
相關問題