在半径内 - 慢查询

时间:2018-03-22 21:19:53

标签: mysql

SELECT property.paon, property.saon, property.street, property.postcode, property.lastSalePrice, property.lastTransferDate,
 epc.ADDRESS1, epc.POSTCODE, epc.TOTAL_FLOOR_AREA,  
        (
            3959 * acos (
                cos (radians(54.6921))
                * cos(radians(property.latitude))
                * cos(radians(property.longitude) - radians(-1.2175))
                + sin(radians(54.6921))
                * sin(radians(property.latitude))
            )
        ) AS distance 
        FROM property 
        RIGHT JOIN epc ON property.postcode = epc.POSTCODE AND CONCAT(property.paon, ', ', property.street) = epc.ADDRESS1 
        WHERE property.paon IS NOT NULL AND epc.TOTAL_FLOOR_AREA > 0
        GROUP BY CONCAT(property.paon, ', ', property.street)

        HAVING distance < 1.4 
        ORDER BY property.lastTransferDate DESC
        LIMIT 10

表属性有2200万行,表epc有1400万行

没有GROUP BY和ORDER BY,它会快速运行。

属性表通常具有多次相同的属性,但我需要选择具有最新lastTransferDate的属性。

如果有更好的方法,我愿意接受它

以下是查询说明: Explained Query Img

0 个答案:

没有答案