Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中实现快速查询_Mysql - Fatal编程技术网

如何在mysql中实现快速查询

如何在mysql中实现快速查询,mysql,Mysql,我使用下面提到的查询返回1400条记录,给出结果大约需要53秒。有什么办法可以让它更快吗。但我的员工主数据包含15000条以上的记录,交易用户登记簿包含25000条记录。查询记录返回1400条记录 select b.t_reg_id, b.version, b.device_imei, b.device_model, b.created_date, b.active, a.emp_id,

我使用下面提到的查询返回1400条记录,给出结果大约需要53秒。有什么办法可以让它更快吗。但我的员工主数据包含15000条以上的记录,交易用户登记簿包含25000条记录。查询记录返回1400条记录

   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;

你看过表上的索引了吗

   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;
此外,一个更好的结构化查询(指示内部联接)可能会改善问题

   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;
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;

在处理涉及CRUD.InnoDB或MyISAM的大量数据时,您可能希望查看存储过程?你能在这里发布my.cnf吗?如果每个表中的1400条记录在53秒内完成,则说明你的安装有严重问题。即使它正在执行一个需要几毫秒的完整表扫描。所有的东西都应该很容易放在内存中,我看不到任何东西在做笛卡尔连接。系统是否负载过重?我正在使用mysql查询浏览器,在employee和transaction user主表中包含超过100000条记录