多个简单连接。多个简单选择

时间:2011-03-03 21:54:55

标签: mysql join

我有一个meta表,看起来像这样

ID     post_id     meta_key      meta_value
1      1           key_01        val
2      1           key_02        val
3      1           key_03        val

我希望获得所有3个键和值。使用JOIN然后选择SELECT会更慢吗? JOIN会让它变得如此简单,例如:

SELECT M1.meta_value AS key_01, M2.meta_value AS key_02, M3.meta_value AS key_04 
FROM `meta` AS M1 
     JOIN `meta` M2 ON M2.post_id = 1 AND M2.meta_key = 'key_02' 
     JOIN `meta M3 ON M3.post_id = 1 AND M3.meta_key = 'key_03' 
WHERE M1.meta_key = 'key_01'

我没有测试过,但你应该明白这一点。

2 个答案:

答案 0 :(得分:1)

我认为使用连接时,mysql引擎有更好的机会创建一个好的查询计划,而不是在进行子选择和/或联合时。

答案 1 :(得分:1)

我相信JOINS比使用嵌套SELECTS更有效。索引外键列(连接列)也可以提高性能。所以在post_id和meta_key上弹出一个索引。索引可能会影响INSERT性能,因此请考虑这一点。