Mysql 多个简单联接与多个简单选择
我有一个Mysql 多个简单联接与多个简单选择,mysql,join,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 M1.meta_value AS key_01, M
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 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'
我没有做任何测试,但你应该明白了。我认为mysql引擎在使用连接时比在执行子选择和/或联合时有更好的机会创建一个好的查询计划。我相信连接比使用嵌套选择更有效。此外,索引外键列(联接列)也将提高性能。所以在post_id和meta_键上弹出一个索引。索引可能会影响插入性能,因此请考虑这一点。为什么需要列的原样--根据所需的三个元键值获取记录,并让应用程序适当地提取这些值,这是一个更简单的查询。