我从 Windows 2012 服务器上的 SQL Server 2016 Express 恢复了数据库,现在选择需要很长时间才能运行。 SQL Server 2016 Express 上一切正常。
这是新的 Windows 2019 服务器(8GB RAM、Intel Xeon 处理器(4 个 CPU)、~2.5GHz)和 SQL Server 2022 Express 安装。
Windows Defender 防病毒服务已安装,但由于我租用服务器,因此无法停止它。
select *
from question with (NOLOCK)
where quizId = 100
运行时间不到1秒
select *
from question with (NOLOCK)
where quizId = 100
order by displayno
然而,这需要 25 秒才能在新服务器上运行,但会立即在旧服务器上运行。
有谁知道我是否需要更改一些设置才能使选择像以前一样工作?
谢谢。
答案表有 800 万条记录,我发现了导致系统瓶颈的查询。
我改变了这个
SELECT * FROM dbo.answer INNER JOIN dbo.question ON dbo.answer.questionId = dbo.question.questionId where question.quizId = @quizId ORDER BY dbo.answer.answerId
对此
SELECT * FROM dbo.answer INNER JOIN dbo.question ON dbo.answer.questionId = dbo.question.questionId where question.quizId = @quizId ORDER BY dbo.question.questionId, dbo.answer.answerId
我不知道为什么这会在 SQL Express 2022 中导致问题,而不是在 SQL Express 2016 中