sql - 该查询的性能调整?

标签 sql sql-server database sql-optimization

我有以下查询来支持按员工姓名排序的员工分页

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/

相关文章:

MYSQL-多列值更改

sql从 "record per month"转换为 "record from/until"

不需要 XML 配置的 Java 数据库 API

c# - Sql 命令不起作用

mysql - 更新具有匹配模式的多列的表

MYSQL触发器和 "FOR EACH ROW"

sql - MySQL 错误 - 我不明白它在说什么

sql - 在postgres中使用GROUP BY子句时如何聚合json字段?

c# - 检查 excel 行中的名称是否与表列名称相同

sql-server - 如果还测试大于,是否有必要测试 NULL?