2013-12-18 91 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;