我有一个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'
我没有测试过,但你应该明白这一点。
答案 0 :(得分:1)
我认为使用连接时,mysql引擎有更好的机会创建一个好的查询计划,而不是在进行子选择和/或联合时。
答案 1 :(得分:1)
我相信JOINS比使用嵌套SELECTS更有效。索引外键列(连接列)也可以提高性能。所以在post_id和meta_key上弹出一个索引。索引可能会影响INSERT性能,因此请考虑这一点。