我沒有收到任何錯誤,因爲這只是一個小問題。我的MySQL查詢有什麼問題?
EXPLAIN
SELECT
a.nid,
a.title,
a.uid,
b.parent,
b.weight,
c.name,
d.value
FROM table1 AS a INNER JOIN table2 AS b ON a.vid = b.vid AND a.status = 1
INNER JOIN table3 AS c ON c.uid = a.uid
INNER JOIN table4 AS d ON d.content_id = a.nid AND d.value_type = 'percent' AND d.function = 'average'
當我看到這表被引用,一切都很好,但是從表4,它應該只選擇「值」字段中,我發現了一個ALL被稱爲...
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE a ref PRIMARY,vid,status,uid,node_status_type,nid status 4 const 1
1 SIMPLE b eq_ref PRIMARY PRIMARY 4 databasename.a.vid 1
1 SIMPLE c eq_ref PRIMARY PRIMARY 4 databasename.a.uid 1 Using where
1 SIMPLE d ALL NULL NULL NULL NULL 2 Using where
正如你所看到的,它從決賽桌(d)中選擇*。爲什麼當我只需要從中選擇一個字段時這樣做?誰能幫我嗎?
非常感謝!我已經完成了所有三個主要工作,現在它工作了!也許我應該閱讀這個索引... 再次感謝! – 2009-01-06 22:30:42
什麼是以前的主要?有另一個獨特的索引嗎?只需使用通用的非唯一索引即可獲得相同的效果。如果nid是唯一的,那麼它應該仍然是主要的,以實現唯一性。 – dkretz 2009-01-06 22:36:46
你爲什麼回滾標籤?這個問題與PHP無關...... – 2009-01-12 02:51:18