Zapytanie mysql pytanie o obecności i ilości

0

Pytanie

W tym zapytaniu* wylistuję i sprawdzam wiersze z "mytableabc" w szerokości i długości geograficznej, różnych kryteriów,... od bliskiego do dalekiego lub partytur i jego pracy danych/danych o listach, i myślę, że to wystarczająco dobrze/szybko!?

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

--problem

w różnych wierszach i plikach muszę tylko całkowita(identyfikator) zwracanych elementów z takimi samymi kryteriami... próbuję dodać licznik(identyfikator), ale to nie daje prawidłowego ogólnej liczby, a także wierszy listy, muszę tylko całkowita(jak zwykle sprawia, że żądanie liczenia), a nie ciąg danych

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

--także to żądanie bez kryteriów odległości/szerokość/zasięgu działa dobrze, przywracając tylko całkowita liczba... ale muszę dodać zapytanie na odległość do tej życzenie

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

nie jestem specjalista sql, i tak, jak widać, jest mi potrzebny. Dziękuję.

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

Najlepsza odpowiedź

0

Plan A:

Przesuń distance sprawdź, aby WHERE pkt. Eliminuje to konieczność w HAVING w tym czasie jak filtrowanie więcej, więc COUNT nie będzie pęcznieć.

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;

Spodziewam się, że FULLTEXT indeks, który będzie używany jako pierwszy, z dwoma innymi zadaniami (= i odległość) sprawdza się dla wszystkich wierszy zwróconych z wyszukiwania FT.

Plan B:

Dalej używać HAVINGale jest podzapytanie. (To chyba wolniej.)

2021-11-18 04:19:40

analizuję/oceniam i planuję wybrane. dzięki za szybką odpowiedź
evet

W innych językach

Ta strona jest w innych językach

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