簡體   English   中英

了解為什么此MySQL外部選擇會減慢查詢速度

[英]Understanding why this MySQL outer select slows down the query

我有一個COMPANY表和一個Zipcodes表,在應用其他處理之前,我想獲得CompanyID的最小子集。 因此,我經常將其放在內部選擇中,在某些WHERE條件下獲取companyID,然后在外部進行一些聚合或計算(例如,距離計算)。

由於某種原因,我不理解為什么外部查詢速度慢而內部查詢速度快。

我知道這與內部的JOIN有關。 因為刪除它可以解決問題。 MySQL以某種方式派生了這些表... SELECT _i1.companyID FROM ( SELECT companyID FROM Companies JOIN Zipcodes ON Zipcodes.zipcode = Companies.companyZipcode WHERE Companies.companyType = 'plumbing' ) _i1時間:.8s
不使用外部查詢:.00x秒

Zipcodes.zipcodeCompanies.companyZipcodeCompanies.companyType上有索引,而Companies.companyID是主鍵。

做一個EXPLAIN顯示外部查詢使MySQL的select_type為Derived而不是Simple。

當您有子查詢時,需要創建一個臨時表並將數據插入其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM