我有一个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'我没有对此进行任何测试,但您应该明白这一点。
发布于 2011-03-04 08:30:48
我认为JOINS比使用嵌套SELECTS更有效。另外,索引外键列(连接的列)也会提高性能。所以在post_id和meta_key上弹出一个索引。索引可能会损害插入性能,因此请考虑这一点。
发布于 2011-03-04 06:01:40
我认为mysql引擎在使用连接时比使用子选择和/或联合时有更好的机会创建一个好的查询计划。
https://stackoverflow.com/questions/5187071
复制相似问题