SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML

最近有一个项目在客户使用时发现死锁问题,用的数据库是SQLSERVER ,死锁的原因是有的客户经常去点报表,报表查询时间又慢,然后又有人在做单导致了死锁,然后主管要我们用SQLSERVER查询时要加with (NOLOCK),但是我在加完 with (NOLOCK) 后发现已经的用Mybatis-plus的 在mybatis里的分页报错了

原因是用了with (NOLOCK) ,select count 把ORDER BY 也放进去了,所以报了这个错

解决办法

1.如果你不是很需要加with (NOLOCK) 的话还是不要加为好。

2.你确实需要加的话,还要用Mybatis-plus的话,要么就自己写select count,要么也可以自己写个后端分页,还可以和pagehelper分页插件组合使用

我的解决办法(将IPage 查询结果换成List 集合返回结果 然后 再将List集合转化成IPage 分页集合)

javascript 复制代码
protected IPage list2Page(Term term, List list) {
        IPage iPage = this.getPage(term);
        int start = (term.getPage() - 1) * term.getRows();
        int end = term.getPage() * term.getRows();
        List list$cpage = new ArrayList();

        for(int i = 0; i < list.size(); ++i) {
            if (i >= start && i < end) {
                list$cpage.add(list.get(i));
            }
        }

        iPage.setTotal((long)list.size());
        iPage.setRecords(list$cpage);
        return iPage;
    }
相关推荐
敲敲千反田2 分钟前
redis哨兵和缓存
数据库·redis·缓存
独泪了无痕5 分钟前
SQL数据类型转换:CAST详解及实践
数据库·sql·oracle
知识分享小能手5 分钟前
Oracle 19c入门学习教程,从入门到精通,Oracle 用户管理与权限分配 —— 语法详解与实战案例(13)
数据库·学习·oracle
DarkAthena7 分钟前
【GaussDB】GaussDB506版本A模式中的date类型
数据库·gaussdb
想做后端的前端7 分钟前
Redis中的Lua使用
数据库·redis·lua
小锋学长生活大爆炸8 分钟前
【工具】免费的文本读写API
java·数据库·mysql
晓风残月淡11 分钟前
mysql数据库完整备份恢复方案(二)
数据库·mysql·adb
l1t13 分钟前
DeepSeek总结的Turso的CTE支持情况
数据库·sqlite·turso
重生之绝世牛码20 分钟前
Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡
大数据·linux·数据库·clickhouse·软件安装·clickhouse集群安装·clickhouse负载均衡
l1t23 分钟前
修改德哥的PostgreSQL求解数独SQL在cedardb上运行
数据库·sql·postgresql·cedardb