Sql 为什么使用Where in运算符时打字速度慢

Sql 为什么使用Where in运算符时打字速度慢,sql,express,typeorm,Sql,Express,Typeorm,我使用的是typeorm where in运算符,其中我获得每个位置的最大值(日期),在大约70个位置之后,它会在90秒后返回数据,而在sql server中只需5秒 这就是我到目前为止所得到的,这段代码可以工作,但是经过大量的不同步之后,它会减慢速度,以至于不再重新返回数据 const getLastTimeIn = await getRepository(TimeInOut) .createQueryBuilder("TimeInOut") .select(["max(DateT

我使用的是typeorm where in运算符,其中我获得每个位置的最大值(日期),在大约70个位置之后,它会在90秒后返回数据,而在sql server中只需5秒

这就是我到目前为止所得到的,这段代码可以工作,但是经过大量的不同步之后,它会减慢速度,以至于不再重新返回数据

  const getLastTimeIn = await getRepository(TimeInOut)
  .createQueryBuilder("TimeInOut")
  .select(["max(DateTrans) as date"])
  .where("location IN (:...location)")
  .setParameters({ location: unsyncLocations })
  .groupBy("location")
  .getRawMany();
我也尝试了循环的位置,但它似乎比上面的代码慢得多

for (let i = 0; i < unsyncLocations.length; i++) {
  const element = unsyncLocations[i];
  const getLastTimeIn = await getRepository(TimeInOut)
    .createQueryBuilder("TimeInOut")
    .select("top 1 DateTrans")
    .where("location = :location")
    .setParameters({ location: element })
    .orderBy("DateTrans", "DESC")
    .getRawMany();
  console.log(getLastTimeIn);
  await unsyncData.push({
    id: id,
    location: element,
    DateTrans: this.dateFormater(getLastTimeIn[0].DateTrans)
  });
  id++;
}
这里是等价的查询

select Max(DateTrans)  from TimeInOut where location in ('location1','location2',etc...)
输出将是

dateTrans 
9/29/2019
9/29/2019

尝试分享更多的信息。代码、架构和查询都会很有帮助。@evert抱歉,我刚刚编辑完它。您还可以共享您的数据库架构吗?您好@evert谢谢您的帮助,我只是编辑了我的条目的帖子。我看不到任何索引。如果您处理的是一个相当大的数据集,索引在这里可能真的很有用。我还发现位置是字符串而不是整数这一点有点可疑,但你们可能在这里最清楚。
dateTrans 
9/29/2019
9/29/2019