2017-08-30 48 views
0

我正在運行下面的查詢從現有表中獲取重複的記錄。下面是我在做查找重複記錄(電話)從兩個表mysql選擇查詢

  1. 上傳CSV
  2. 加載數據到臨時表
  3. 書面查詢檢查表通過加入臨時表和當前表中已存在具有相同的電話號碼重複記錄的過程。

我的查詢在當前表格中工作正常,最多100,000條記錄,但當前表中的實時系統數據多於10,000,000條,因此查詢輸出超時。

我的查詢是

select 
tempTbl.id + 1 as SrNo, 
`tempTbl`.`phone` as `phone`, 
( CASE WHEN count(panelists.id) > 1 THEN 
     CONCAT(CONCAT('Phone Already Exist with Panelist ID ', panelists.id 
,' and Duplidate counts is ',count('panelists.id')) 
    ELSE  
     CONCAT('Phone Already Exist with Panelist ID ',' ',panelists.id) 
    END 
) AS reason from `panelists` as `panelists` 
inner join `temp` as `tempTbl` on `panelists`.`phone` = `tempTbl`.`phone` 
where `panelists`.`panel_id` = ? group by `tempTbl`.`phone` 
having tempTbl.phone != '' 

我會感激,如果任何幫助的建議,以優化我的查詢。提前致謝。

+0

爲什麼你有寫查詢的查詢?除非您執行它,否則該字符串不會執行任何操作。 – tadman

+0

我在我的代碼中執行這個查詢,但輸出是超時的 – Dnyanesh

回答

0

你檢查,並試圖改變和增加MySQL配置文件默認值(mysqld中的部分選項connect_timeout) -

[mysqld] connect_timeout=100 

請參閱在兩個數據庫servers.If查詢是比較配置參數在一臺服務器上成功執行,我們可以檢查兩者的配置參數。

+0

感謝您的回覆。我的迴應是504網關超時nginx/1.4.6(Ubuntu)。它會工作,如果我更改MySQL配置文件。我正在運行這個查詢從PHP。有沒有機會優化查詢? – Dnyanesh