none
向高手们提问 ORDER By 和 TOP 同时应用后的问题 RRS feed

  • 问题

  • select top 1  t.TaskId
    FROM   RequestBatch rb(nolock)
    JOIN   Request r(nolock)
      ON   r.RequestId = rb.RequestId
    JOIN   Task t(nolock)
      ON   t.RequestId = r.RequestId
     AND   t.BatchRequestId = rb.BatchRequestId
    JOIN   Bins b(nolock)
      ON   b.BinId = t.BinId
    WHERE  1 = 1
      AND rb.BatchNo ='0101PDOP1108300004'
    ORDER by b.SortId

    这个语句查询起来非常的慢

    Task 表数据 在 1000W 左右 Request在700W RequestBatch 900W

    BinS 几十W

    但是 如果把 TOP 1 去掉就是秒杀

    Order by b.SortId,t.TaskId 这样也是秒杀

    请问 Oorder by 和TOP 同时应用时 TOP 为啥这么慢?

    b.SortId 有非聚集索引

    我在说一下表之间的关系

    Request 对应 多条 RequestBatch 对应多条 Task

    Bins 是基础信息 Task 也对应对个Bins

    基本情况就是这样 去掉top 1 或者 order by 或者 order by 多加一列 都非常的快 就是top 和 order by b.sortid 非常的慢 慢到无法接受

    请问这个是什么情况 希望能解答的详细一点

     


    2011年8月30日 9:15

全部回复