如何从一个表中提取大量的多行


How do I pull large number of multiple rows from one table?

这是我在这里提出的原始问题的扩展:如何从具有一个唯一字段和另一个字段的特定值的表中提取所有行?

我有一个包含两个字段的表:user_id和skill_id。

我想找出skill_id为某个数字的所有行,但我有大量的skill_ids要搜索(~30)。我使用了上面链接的问题中提出的自加入建议,但由于需要寻找很多技能,该查询速度非常慢。

如何查找大量的skill_id而不使查询陷入困境?

编辑:

下面是我要找的一个例子。使用下表,我想提取skill_id为10 AND 11 AND 12等的所有用户行(除了我一次要查找30个技能)。

TABLE
user_id   |  skill_id
=====================
1         |    10
1         |    11
1         |    12
1         |    13
2         |    10
2         |    12
2         |    13
3         |    15
3         |    16
4         |    10
5         |    45
5         |    46

如果我能很好地理解您的问题,下面的查询可能会对您有所帮助。假设(user_id, skill_id)是UNIQUE或PK.

SELECT user_id
FROM tab
WHERE skill_id IN (30 entries)
GROUP BY user_id
HAVING SUM(skill_id IN (30 entries)) = 30;

你可以在这里测试。http://www.sqlfiddle.com/#!2/f73dfe/1/0

select user_id 
from table 
where skill_id IN (10,11,12...)     

make suer skill_is被索引为