我有一个带有
in_
过滤器的查询。我想弄清楚的是 - 使用元组或集合作为 in_
参数是否更有效,或者它们总是转换为列表?
1. ids = [1, 2, 3]
2. ids = {1, 2, 3}
3. ids = (1, 2, 3)
session.query(T).filter(T.id.in_(keys)).all()
所有三种类型都可以与
in_
一起正常工作,但是...
filter
最有效的类型是什么?我查看了文档但没有找到答案。
InElementImpl._literal_coercion 检查输入(如果是文字)是否是可迭代的而不是字符串,然后对其调用
list
。
因此,传递列表可能比传递另一个内置迭代(如集合或字典)更有效,并且肯定比传递自定义迭代更有效。
但是同意python_user的评论,除非您正在处理巨大的列表,否则相对于网络等待时间、结果转换等,转换成本可能很小。