我正在處理一個現有的項目,一切工作正常,但現在該網站包含超過200,000條記錄。現在我遇到了性能問題。現在,當我嘗試從表中獲取記錄時,即使我在查詢中使用了分頁,也需要20多分鐘來獲取記錄。以下是我使用左連接從多個表中獲取記錄的查詢。優化超過200,000條記錄的查詢
SELECT cus.sl_no, cus.customer_name, ccd.address, ccd.mobile_no, ccd.residence_no,
ccd.office_no,id.customer_id,cid.manufacturer,cid.model,cid.model_year,
cid.vin_no,cid.renewal_insurance_date,cid.insurance_company,
cid.cr_no,cid.inhouse_outside,cid.sales_consultant_name,
cid.sales_consultant_contact_no,cid.insurance_date,
cid.vehicle_registration_no
FROM customer_insurance_details cid
LEFT JOIN call_allotment_ref_admin admin
ON cid.customer_id = admin.customer_id
LEFT JOIN customer as cus
ON cid.customer_id = cus.customer_id
LEFT JOIN customer_contact_details as ccd
ON cid.customer_id = ccd.customer_id
WHERE admin.alloted_date IS NULL
AND cid.manufacturer='"+mf+"'
AND cid.renewal_insurance_date = '"+mnth+"'
limit "+pageNo+",100
該查詢基於製造商和月份的客戶,customer_insurance_details和customer_contact_details獲取記錄customer_insurance_details和 連接客戶和customer_contact_details。
還有一個表call_allotment_ref_admin,在這兩個表cutomer_insurance_details/call_allotment_ref_admin有共同的customer_id,現在當我運行查詢在call_allotment_ref_admin客戶不應該在customer_insurance_details可見。
如果在call_allotment_ref_admin以及customer_insurance_details中有一個101 customer_id,那麼當我將抓取記錄時,該顧客應該不可見。
這是一個現有的項目,我不允許添加或刪除表中的任何列,只有我需要優化查詢並使結果獲取速度更快。
如果你能提供一些這方面的信息,我會非常感激。
客戶
sl_noint(10) NOT NULL
customer_idvarchar(20) NOT NULL
customer_namevarchar(100) NULL
create_timedatetime NOT NULL
last_update_timedatetime NOT NULL
Customer_contact_details
sl_noint(10) NOT NULL
customer_idvarchar(20) NOT NULL
addressvarchar(400) NULL
cityvarchar(50) NULL
statevarchar(50) NULL
pin_codevarchar(15) NULL
countryvarchar(50) NULL
emailvarchar(200) NULL
mobile_novarchar(100) NULL
residence_novarchar(100) NULL
office_novarchar(100) NULL
create_timedatetime NOT NULL
last_update_timedatetime NOT NULL
vehicle_classvarchar(50) NULL
seating_capacityvarchar(50) NULL
new_emailvarchar(100) NULL
new_numbervarchar(50) NULL
cubic_capacityvarchar(50) NULL
special_conditionvarchar(200) NULL
lastyear_premiumvarchar(50) NULL
Customer_insurance_details
sl_noint(10) NOT NULL
customer_idvarchar(20) NOT NULL
vin_novarchar(50) NOT NULL
insurance_datevarchar(30) NULL
renewal_insurance_datevarchar(30) NULL
insurance_companyvarchar(100) NULL
service_adviser_idvarchar(100) NULL
idv_novarchar(50) NULL
premiumvarchar(50) NULL
claim_bonusvarchar(50) NULL
create_timedatetime NOT NULL
last_update_timedatetime NOT NULL
sales_consultant_namevarchar(100) NULL
sales_consultant_contact_novarchar(50) NULL
customer_typevarchar(50) NOT NULL
vehicle_registration_novarchar(50) NULL
manufacturervarchar(50) NULL
modelvarchar(200) NULL
model_yearvarchar(30) NULL
cr_novarchar(50) NULL
inhouse_outsidevarchar(50) NULL
cover_note_novarchar(50) NULL
variantvarchar(50) NULL
call_statusvarchar(50) NULL
service_advisor_namevarchar(70) NULL
service_advisor_contact_novarchar(50) NULL
accessories_typevarchar(50) NULL
accessories_valuevarchar(50) NULL
call_allotment_ref_admin
sl_noint(50) NOT NULL
user_idvarchar(100) NULL
permission_levelvarchar(50) NULL
managerIdvarchar(100) NULL
customer_idvarchar(100) NULL
call_statusvarchar(70) NULL
alloted_datedate NULL
insurance_datevarchar(30) NULL
customer_namevarchar(100) NULL
addressvarchar(200) NULL
mobile_novarchar(50) NULL
residence_novarchar(50) NULL
office_novarchar(50) NULL
manufacturervarchar(70) NULL
modelvarchar(200) NULL
model_yearvarchar(30) NULL
vin_novarchar(100) NULL
insurance_companyvarchar(100) NULL
cr_novarchar(100) NULL
sales_consultant_namevarchar(100) NULL
sales_consultant_contact_novarchar(50) NULL
inhouse_outsidevarchar(50) NULL
create_timedatetime NULL
last_update_timedatetime NULL
alloted_call_idvarchar(50) NULL
ins_monthvarchar(50) NULL
是否有您「customer_insurance_details」表中的任何索引。如果沒有,你是否允許創建索引? – Neels
不,沒有任何索引創建,是的,我可以創建索引 – user3309554
我注意到,當我不加入customer和customer_contact_details,我得到的結果非常快。 – user3309554