为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Win10
【CPU】:i7-4710MQ
【问题描述】*:
我现在使用SqlSugar的ORM框架进行开发,然后在做数据分页的时候,
ORM框架生成了如下的SQL文:
SELECT *
FROM (
SELECT 'COMPANY_ID', 'COMPANY_NAME', 'REGISTER_DATE',
'ZIPCODE', 'ADDRESS',
ROW_NUMBER() OVER (ORDER BY sysdate) AS RowIndex
FROM "COMPANY_INFO"
) T
WHERE RowIndex BETWEEN 1 AND 20
按照正常的思路,这个SQL文的排序效果应该和下面这句相同
SELECT * FROM "COMPANY_INFO" T
但是实际结果却把第一行数据放在了最后,现在测试下来,应该是排序中使用sysdate的问题,但是具体是怎么导致的呢?
这个是SqlSugar的结果
这个是SELECT * 的排序结果
您这里面使用sysdate进行排序不合适吧?查询的时候如果每秒出10000结果集,那理论上这一万结果集的sysdate都是同一个值。
建议您这边可以使用ROWID进行排序