我没有收到任何错误,因为这只是一个小问题。我的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