提高mysql查询的准确性

提高mysql查询的准确性,mysql,join,Mysql,Join,有没有办法提高以下查询的准确性 SELECT DISTINCT a.localgeo, a.foreigngeo, b.lat, b.lng, c.lat, c.lng FROM tbl_correlateddata a JOIN tbl_geodetail b ON a.localgeo = b.code JOIN tbl_geodetail c ON a.foreigngeo = c.code 我正在访问一个包含2个国家/地区代码的表 localgeo|foreigngeo -------

有没有办法提高以下查询的准确性

SELECT DISTINCT a.localgeo, a.foreigngeo, b.lat, b.lng, c.lat, c.lng
FROM tbl_correlateddata a
JOIN tbl_geodetail b ON a.localgeo = b.code
JOIN tbl_geodetail c ON a.foreigngeo = c.code
我正在访问一个包含2个国家/地区代码的表

localgeo|foreigngeo
--------------------
JP      |AD
JP      |AD
US      |HK
AD      |JP
HK      |US
AD      |JP
CN      |US
并尝试用另一个表中的经度和纬度值填充它

code|lat|lng
------------
JP  |1  |2
US  |3  |3
HK  |1  |4
AD  |3  |4
CN  |4  |4
结果是这样的

localgeo|lat|lng|foreigngeo |lat|lng|
------------------------------------
JP      |1  |2  |AD         |3  |4
US      |3  |3  |HK         |1  |4
HK      |1  |4  |US         |3  |3
AD      |3  |4  |JP         |1  |2
CN      |4  |4  |US         |3  |3

但是这个查询需要很多时间。有什么方法可以加快速度吗?

问题是您对所有字段都使用了distinct,您没有使用
()
,这需要花费很多时间。尝试仅对一列使用distinct

像这样

localgeo|lat|lng|foreigngeo |lat|lng|
------------------------------------
JP      |1  |2  |AD         |3  |4
US      |3  |3  |HK         |1  |4
HK      |1  |4  |US         |3  |3
AD      |3  |4  |JP         |1  |2
CN      |4  |4  |US         |3  |3
    SELECT DISTINCT (a.localgeo), a.foreigngeo, b.lat, b.lng, c.lat, c.lng
    FROM tbl_correlateddata a 
    JOIN tbl_geodetail b 
      ON a.localgeo = b.code 
    JOIN tbl_geodetail c 
      ON a.foreigngeo = c.code
编辑:

大致相当于:

     SELECT a,b,c FROM t GROUP BY a,b,c
所以你应该这样做

     SELECT a.localgeo, a.foreigngeo, b.lat, b.lng, c.lat, c.lng
    FROM tbl_correlateddata a 
    JOIN tbl_geodetail b 
      ON a.localgeo = b.code 
    JOIN tbl_geodetail c 
      ON a.foreigngeo = c.code
     GROUP BY a.localgeo ,a.foreigngeo

您好,谢谢您的回复,但问题是我需要两个列都是不同的..因为我得到的结果中不能有重复组合..如
distinct(a.localgep,a.foreigngeo)
但这是不可能的..有解决方法吗?查看我的编辑,不要使用distinct和group by列,因为你想将它们区分开来,是的……就是这样。
group by
做得很好:)非常感谢