Mysql查询问题有关的具有和计

0

的问题

在这个查询*我名单和排序的行"mytableabc"的纬度、经度、各种标准,...从附近或远或分及其工作/清单数据,并且我认为其良好的/足够多快!?

select 
round((6371 * acos(cos(radians('40.123456')) * cos(radians(latitude)) * cos(radians(longtitude) - radians('29.123456')) + sin(radians(latitude)) * sin(radians('40.123456')))), (2)) as distance, 
    (match(colone,coltwo) against('searchkeywordabc' in boolean mode)) as score, 
id,colone,coltwo,latitude,longtitude,colthree 
        from mytableabc 
        where (colone='sampleforsomething') 
            and (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
                having distance <= 5 order by distance asc limit 0,50

--问题

在不同的线路和文件,我仅仅需要总数数(id)的返回元用同样的标准... 我试着要添加数(id),但它没有提供正确的数总和还列出行, 我只想总数字(作为正常的数查询的确)不是数据线

select 
    count(id), 
round((6371 * acos(cos(radians('40.123456')) * cos(radians(latitude)) * cos(radians(longtitude) - radians('29.123456')) + sin(radians(latitude)) * sin(radians('40.123456')))), (2)) as distance, 
        (match(colone,coltwo) against('searchkeywordabc' in boolean mode)) as score, 
    id,colone,coltwo,latitude,longtitude,colthree 
            from mytableabc 
            where (colone='sampleforsomething') 
                and (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
                    having distance <= 5 order by distance asc limit 0,50

--还有这个查询,而无需的距离/纬度/longtitude标准运作良好,只返回总数的...但是我需要加入距离查询,查询这个

select count(id) from mytableabc where (colone='sampleforsomething') and (match(colone,coltwo) against('searchkeywordabc' in boolean mode))

我不sql专家是正如你看到的我需要一个。 谢谢你。

geolocation mariadb mysql php
2021-11-17 21:58:00
1

最好的答案

0

计划:

移动 distance 检查到 WHERE 条款。 这样就不需要 HAVING 虽然过滤多,所以 COUNT 不会是夸大。

select  count(*)
    from  mytableabc
    where  (colone='sampleforsomething')
      and  (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
      AND  (6371 * acos(cos(radians('40.123456')) * 
        cos(radians(latitude)) * cos(radians(longtitude) -
        radians('29.123456')) + sin(radians(latitude)) *
        sin(radians('40.123456')))) < 5;

我期望的 FULLTEXT 索引可以使用第一,与其他两个试验(= 和距离)被检查者对所有行返回,从英尺搜索。

B计划:

继续使用 HAVING但有一个子查询。 (这可能是速度较慢。)

2021-11-18 04:19:40

我分析/基准和计划的一个选择。 谢谢你快回复
evet

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................