SQL Server查询使用knex崩溃next应用程序时,结果大小太大



在next应用程序中使用knex查询托管在Azure上的SQL Server数据库。当查询一个有150k行的特定表时,应用程序崩溃,但打印返回结果的长度。当查询一个有2k行的小表时,没有问题。

是否对我可以从单个查询返回多少数据有限制?我需要能够在几个表中返回大约100万行数据,这样我就可以聚合和显示使用原始表数据完成的一些计算。

我认为这是可以理解的,数据量占用太多的内存,但我想知道是否有任何解决方法来返回吨和吨行w/o问题。

api/线路/tickets.js

const { Router } = require('express');
const router = Router();
const knex_db = require('knex')({
client: 'mssql',
connection: {
host: 'mydb.database.windows.net',
user: 'user',
password: 'secret',
port: 1433,
options: {
database: 'mydatabase',
encrypt: true
}
}
});
router.get('/tickets/all', async function(req, res) {
const results = await knex_db('dbo.tickets');
console.log('results.length: ' + results.length);
res.json({data: results});
})
module.exports = router;

api/index.js

const express = require('express');
const app = express();
const tickets = require('./routes/tickets');
app.use(tickets);
module.exports = {
path: '/api',
handler: app
}

页面/设置/index.vue

<script>
export default {
async asyncData ({ $axios }) {
const data = (await $axios.$get('/api/tickets/all')).data;
// console.log(data);
return { tickets: data }
}
}
</script>

我可以通过从

更改我的代码来解决这个问题
res.json(...)

res.status(200).json(...)

由于某些原因,res.json一定引起了内存泄漏或类似的事情。

相关内容