2013-12-18 65 views
1

我正在使用下面提到的查询返回1400记录它需要大约53秒来给出结果。有什么办法可以让它更快。但我的员工主人包含更多的15,000条记录,而transaction_user_register包含25,000条记录。查询记录返回1400记录如何在mysql中快速查询

select 
     b.t_reg_id, 
     b.version, 
     b.device_imei, 
     b.device_model, 
     b.created_date, b.active, 
     a.emp_id, 
     a.emp_code, 
     a.role_id, 
     first_name, 
     last_name, 
     concat('91',a.mobile_no) as mobileno, 
     c.role_code , 
     '' as Orgunit 
    from 
     employee_master a, 
     transaction_user_register b, 
     emp_role_master c 
    where 
     a.emp_code=b.emp_code and 
     a.role_id=c.role_id 
    group by emp_code; 
+0

在处理涉及CRUD的大量数据时,您可能需要查看存储过程。 –

+0

InnoDB或MyISAM?你可以在这里发布my.cnf吗? – ravnur

+1

如果每个表中的1400条记录结果为53秒,那么安装时会出现严重错误。即使它正在进行全表扫描,应该需要几毫秒。所有内容都应该很容易适应,而且我没有看到任何做笛卡尔连接的东西。系统是否负载过重? –

回答

1

你看过你的表上的索引吗?

另外,也许一个更好的结构化查询表明INNER JOINS会改善问题。

select b.t_reg_id,b.version,b.device_imei,b.device_model,b.created_date, b.active, 
     a.emp_id, a.emp_code,a.role_id,first_name,last_name,concat('91',a.mobile_no) as 
     mobileno, c.role_code ,'' as Orgunit 
from 
employee_master a 
inner join transaction_user_register b 
    on a.emp_code=b.emp_code 
inner join emp_role_master c 
    on a.role_id=c.role_id 
group by emp_code;