【发布时间】:2019-05-23 17:21:46
【问题描述】:
应用程序中的一个选项卡已损坏(当点击该选项卡时,它会继续旋转并调用特定服务并在一段时间后出现 404 错误)。我们为 Application DB 中的几列创建了索引,看看这是否能提高性能。创建索引并没有太大的区别。
所以我们计划重写 sql 查询以提高性能并修复它。
select distinct
editedUser.*
from
users editedUser,
relationship_ref editedUserRelationship,
users approvingUser,
user_role approvingUserRoles,
role_permission approvingUserRolePermissions,
account approvingUserAccount
where
approvingUser.user_id = 175263
and approvingUser.user_id = approvingUserRoles.user_id
and approvingUserRoles.role_id = approvingUserRolePermissions.role_id
and approvingUserRoles.user_role_status_id = 2
and editedUserRelationship.relationship_id =
editedUser.submitted_relationship_id
and (approvingUser.account_id = approvingUserAccount.account_id
or approvingUser.account_id is null)
and editedUser.review_status = 'R'
and approvingUserRolePermissions.permission_id =
editedUserRelationship.view_pending_permission_id;
这需要将近 6 分钟。所以请有人建议如何在此查询中使用正确的联接。它有 36 列和 30,000 条记录。
【问题讨论】:
-
是什么让您认为问题出在连接上?
-
如果我使用左连接或右连接而不是交叉连接。它可能会提高性能
-
真的不会。
标签: sql database oracle performance query-optimization