是否有使用mysql IN或类似方法选择数千行的可扩展方法?
E.g。
SELECT * FROM awesomeTable WHERE id IN (1,2,3,4......100000)
这可能还是我只是在做梦? Schema是InnoDB,如果另一个提供更具可扩展性的解决方案,则可以更改。
作为参考,我从Solr返回的一组id中获取搜索结果。我想使用mysql进行最终检索,因为它会使这些结果的排序和最终过滤变得更加容易(我不会详细介绍原因)。
修改
只要IN仍然包含所有100000个ID,查询就可以使用LIMIT子句
E.g。
SELECT * FROM awesomeTable WHERE id IN (1,2,3,4......100000) LIMIT 10;
答案 0 :(得分:1)
我是我,并不是真正了解您的框架,您应该尝试将这些ID插入临时表并使用此表与简单的内部联接。这可以证明和IN一样快。
答案 1 :(得分:0)
插入mysql表时我遇到了同样的问题。 可能的查询大小取决于您的mysql配置。
我的方法是将大ids集合分成若干部分。
使用Ruby on Rails:
all_ids.each_slice(10000) do |ids_part|
query = "INSERT INTO ..."
end
也许这也可以是按ID选择行的解决方案。