1

现在我正在处理一个查询,它从 table1 输出大约 20k 行数据。Node 方便地将其转换为简单的 JSON。所以它是一个巨大的对象,包含作为较小对象的输出行。

{
    { // item 1
        column1: value1,
        column2: value2,
        ...
    },
    { // item 2
        column1: value1,
        column2: value2,
        ...
    },
    ...
}

对于此结果中的每个项目,我想从 table2 中选择更多值。但是,列表中的一项与表 2 的行之间的相关性是一对多的。也就是说,如果我做一个简单的左连接,它会输出如下内容:

{
    { // item 1 with added value from table2
        ...
    },
    { // item 1 with different value from table2
        ...
    },
    { // item 1 with yet another value from table2
        ...
    },
    ...
}

这在带宽上是非常浪费的,并且远高于我希望它在 20k 行中工作的速度限制。我想以某种方式实现的是这样的结构:

{
    { // item 1
        column1: value1,
        column2: value2,
        ...
        {
            table2value1: value1,
            table2value2: value2,
            ...
        }
    },
    { // item 2
        column1: value1,
        column2: value2,
        ...
        {
            table2value1: value1,
            table2value2: value2,
            ...
        }
    },
    ...
}

目前,仅在准备好的语句中循环遍历 20000 个项目是我对如何执行此操作的最佳猜测。但是,这也很慢,并且可能有更好的方法我不知道(或无法想到)。一些规范:使用 Node、mssql 包和 SQL Server 2000(很抱歉)作为数据库。

任何输入都非常感谢!

4

1 回答 1

0

您可以编写一个返回有序列表的查询:

customer   order   orderline   ...
1          1       1
1          1       2
1          2       1
2          3       1

客户端,您可以遍历此行集并在客户 ID 更改时创建新客户,在订单号更改时创建新订单等。这种方法仅使用一个数据库调用这一事实使其非常快。

于 2015-01-20T19:47:59.497 回答