Oracle SQL 优化:限制查询结果集大小

以下 SQL 代码旨在从 T_IAC_USER_ACTION 表中查询满足特定条件的用户操作记录,并按计数升序排序,最后只返回前两条记录。

SELECT * FROM (SELECT id, user_id, menu_id, count, create_time, update_time FROM T_IAC_USER_ACTION WHERE (user_id = '470072' AND menu_id IN ('86d26624328a49eab9b5b4e26c085aec','cd4de65bed4a41e395479e470943e7a3','ffcc28b870e74146a00a3ed13722b15f','2ae7b643d466489fa643691abb4c2446','908fffb05f11489e8bf0f3215af2d984','854f901aa718445e83b19453baedeaad','4a1db4412e514c86a2ed7f6a307b1114','33162624ec0a4aca9d52a46b54576961')) ORDER BY count ASC) WHERE ROWNUM <= 2;

为了提高代码可读性和可维护性,可以使用 lambdaQuery() 方法进行优化。以下代码使用 Java 代码展示如何使用 lambdaQuery() 方法实现相同的查询效果。

userActionService.lambdaQuery()
                .eq(UserAction::getUserId, id)
                .in(!isAdministrator, UserAction::getMenuId, userAssociatedMenuIdSet)
                .orderByAsc(UserAction::getCount)
                .last('WHERE ROWNUM <= 2')
                .list();

该代码使用 lambda 表达式简化了 SQL 查询语句,同时使用 last() 方法添加了 WHERE ROWNUM <= 2 语句,以限制查询结果集大小。

通过这种方式,我们可以有效地提高查询效率,并提供更清晰的代码结构。

Oracle SQL 优化:限制查询结果集大小

原文地址: https://www.cveoy.top/t/topic/nw4F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录