*我无法添加代码因为我不在那台电脑附近
简单模型包括:
class Test
static data about test
class Site
static data about site
class Result
foreign key Site
foreign key Test
startTime
result
参数:
listTest,
listSite,
listStatus
我做了一个以上面的列表返回的查询 返回表示需求交集的测试 querySet。
我现在想要查询
以相同的给定列表返回
仅测试 最后结果位于listStatus
我已经制作了一个for循环,如果我在超过5K的测试结果上使用它,则需要一分钟以上。
答案 0 :(得分:1)
从您的问题来看,很难知道您在处理代码,数据库本身和查询方面的内容,所以这只是我最好的猜测。
如果您要在循环中执行查询,则会出现N + 1查询问题。从这些数据看起来就像你可以做一个连接。但是,我不太确定您的数据库结构是什么样的,或者您希望查询返回的确切内容,因此我无法为您提供SQL解决方案。我会这样说:许多数据库不会自动向外键列添加索引。因此,我建议采取以下步骤:
数据库在处理复杂查询和返回大量数据方面效率惊人。如果您在循环中查询,则可能花费大部分时间来生成和解析SQL,并将数据与数据库进行编组。使用返回大结果的大型查询通常比重复使用返回小结果的小查询更有效。