[英]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.zipcode
和Companies.companyZipcode
和Companies.companyType
上有索引,而Companies.companyID
是主鍵。
做一個EXPLAIN顯示外部查詢使MySQL的select_type為Derived而不是Simple。
當您有子查詢時,需要創建一個臨時表並將數據插入其中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.