![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 44 Dołączył: 31.07.2011 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam taką funkcję:
Nie będę tłumaczył wszystkiego, osoby znające się zrozumieją na pewno (po nazwach funkcji wiadomo o co chodzi). Chodzi o to, że w jednej tabeli mam miejscowości wraz ze współrzędnymi geograficznymi, a w drugiej odległości między miejscowościami. W ten sposób jak ja to rozwiązałem to strasznie wolno chodzi (obecnie w bazie jest ok 1000 miejscowości). Co prawda obliczam tylko raz, ew. aktualizacja w przyszłości po dodaniu nowych miejscowości, ale tak z ciekawości chciałbym was zapytać, czy widzicie jakieś lepsze rozwiązanie? Tak jak mam w przykładzie dla LIMIT 3000 u mnie na laptopie funkcja wykonuje się ponad 15 sekund. Kiedyś to zrobiłem bardziej w php, przeleciałem całą tabelę w pętlach, ale dzięki temu sposobowi łatwiej mi jest dodawać nowe miejscowości. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kod WHERE i1<i2 AND i1 NOT IN (SELECT id1 from %2$s WHERE id1 = i1 AND id2 = i2) To nie wygląda najlepiej, a przy Twojej strukturze zapytania z indeksami cięzko. Polecam pozbyć się NOT IN albo zmienić zapytanie tak, żeby nie generowało tymczasowych danych, tylko operowało na istniejących tabelach. i1<i2 też lekkie nie jest. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 03:46 |