select security_report_resource.res_id
from security_report_resource
where security_report_resource.role_id in
(select r.role_id
from security_user_role r,security_report_resource
where r.account = 'longnan')上面这局sql 其中 子查询的 数据量很小
但是 security_report_resource表的 数据量很大。 导致 查询速度很慢。
有什么好的优化方法吗。
from security_report_resource
where security_report_resource.role_id in
(select r.role_id
from security_user_role r,security_report_resource
where r.account = 'longnan')上面这局sql 其中 子查询的 数据量很小
但是 security_report_resource表的 数据量很大。 导致 查询速度很慢。
有什么好的优化方法吗。
select security_report_resource.res_id
from security_report_resource
where exists (select r.role_id
from security_user_role r,security_report_resource
where r.account = 'longnan' and security_report_resource.role_id = select r.role_id)你这样试下
select security_report_resource.res_id
from security_report_resource
where security_report_resource.role_id in
(select r.role_id
from security_user_role r
where r.account = 'longnan')
select security_report_resource.res_id
from security_report_resource
where security_report_resource.role_id in
(select r.role_id
from security_user_role r
where r.account = 'longnan') sql就是这样的
from security_report_resource a, security_user_role b
where b.role_id = a.role_id
and b.account = 'longnan'
试试这个呗,另外,返回的记录大概占security_report_resource 的多少,占的多用全表扫描,占的少就走索引.