在这种情况下如何做出高效的SQL Select?
How to make an efficient SQL Select in this situation?
我在 MySQL 数据库中有一个像这样的 table 结构:
#data_table
(id) | user_id | (more fields...)
#relations_table
(id) | user_id | user_coach_id | (...)
我想 select relation_table
中具有给定 user_coach_id
的所有行以及 data_table
中匹配 [=16] 的所有行中的每一行=].理想情况下是在一次查询中,更理想的是采用一种不会使数据处理过于复杂的方式。
我的 SQL 技能有点生疏,所以我希望有人能帮助我,或者至少指出正确的方向。
(注意:我在本例中使用的框架是wordpress wpdb class。但我认为它不是很相关。)
编辑: 谢谢,我开始按照我的要求工作,但现在我 运行 进入了一个更复杂的场景,所以我做了一个 more specific question为此。
只需简单地输入一个 Join(例如“Left Join”)
SELECT data_table.id ,data_table.user_id ,data_table.(more_fields...), relations_table.user_id
FROM data_table
LEFT JOIN relations_table
ON data_table.id =relations_table.user_id
ORDER BY data_table.id ;
"for a given user_coach_id" 使得它:
DECLARE @User_Coach_Id = 100
SELECT rt.user_id, ...
FROM #data_table dt
INNER JOIN #relations_table rt
ON dt.user_id = rt.user_id
WHERE rt.User_Coach_Id = @User_Coach_Id
Relations_table是many:manytable?省略 ID;这是一种浪费,并且会减慢速度。参见 http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
如果框架不能让您做最优化的事情,那么它就是相关的。
我在 MySQL 数据库中有一个像这样的 table 结构:
#data_table
(id) | user_id | (more fields...)
#relations_table
(id) | user_id | user_coach_id | (...)
我想 select relation_table
中具有给定 user_coach_id
的所有行以及 data_table
中匹配 [=16] 的所有行中的每一行=].理想情况下是在一次查询中,更理想的是采用一种不会使数据处理过于复杂的方式。
我的 SQL 技能有点生疏,所以我希望有人能帮助我,或者至少指出正确的方向。
(注意:我在本例中使用的框架是wordpress wpdb class。但我认为它不是很相关。)
编辑: 谢谢,我开始按照我的要求工作,但现在我 运行 进入了一个更复杂的场景,所以我做了一个 more specific question为此。
只需简单地输入一个 Join(例如“Left Join”)
SELECT data_table.id ,data_table.user_id ,data_table.(more_fields...), relations_table.user_id
FROM data_table
LEFT JOIN relations_table
ON data_table.id =relations_table.user_id
ORDER BY data_table.id ;
"for a given user_coach_id" 使得它:
DECLARE @User_Coach_Id = 100
SELECT rt.user_id, ...
FROM #data_table dt
INNER JOIN #relations_table rt
ON dt.user_id = rt.user_id
WHERE rt.User_Coach_Id = @User_Coach_Id
Relations_table是many:manytable?省略 ID;这是一种浪费,并且会减慢速度。参见 http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
如果框架不能让您做最优化的事情,那么它就是相关的。