我有以下查询来支持按员工姓名排序的员工分页
SELECT rowNumAlias
,Employee.employeeId
,Employee.NAME
FROM (
SELECT row_number() OVER (
ORDER BY Employee.NAME ASC
) rowNumAlias
,employeeId
,NAME
FROM Employee
) employeeData
INNER JOIN Employee ON Employee.employeeId = employeeData.employeeId
WHERE rowNumAlias BETWEEN ? AND ?
其中参数 rowNumAlias 可以是 1 到 100 之间的任意整数
在拥有 100 万条记录的 SQL Server 数据库上,此查询大约需要 7 秒。 有没有办法可以最大限度地减少查询执行时间?
最佳答案
你可以这样尝试:
SELECT * FROM (
SELECT (SELECT row_number() OVER (ORDER BY e2.NAME ASC) FROM Employee e2 WHERE Employee.employeeId = E2.employeeId) rowNumAlias,
,Employee.employeeId
,Employee.NAME
FROM Employee
) e3 WHERE e3.rowNumAlias BETWEEN ? AND ?
关于sql - 该查询的性能调整?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970467/