| | |
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 01.05.05 Príspevky: 13342 Témy: 1494 Bydlisko: Bratislava | Napísal JanoF: 16.10.2014 7:47 | |
|
Potreboval by som pomoct, uz sa s tym trapim a netusim ako na to, v databaze mam ulozene GPS suradnice a podla nich robim vyber miest v zadanom okruhu co je v tomto pripade 10. Chcel by som ale vypisat len pocet riadkov cez COUNT, ale to je asi uz mimo moje chapanie, ci to vobec ide...vedel by mi niekto pomoct? Ano viem, ze si ten pocet mozem zobrazit cez php funkciu, ale chcel by som aby to spravila mysql databaza a setril som tym cas. Kód: SELECT id, (6371 * acos(cos(radians(48...)) * cos(radians(latitude)) * cos(radians(longitude) - radians(21...)) + sin(radians(48...)) * sin(radians(latitude)))) AS distance FROM city HAVING distance < 10 ORDER BY distance
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
Skus toto Kód: SELECT count(*) FROM city WHERE (6371 * acos(cos(radians(48...)) * cos(radians(latitude)) * cos(radians(longitude) - radians(21...)) + sin(radians(48...)) * sin(radians(latitude)))) < 10 Namiesto HAVING som pouzil WHERE, lebo neviem naco tam HAVING mas Na "normalnej" databaze by ti tvoj vyber ani nezbehol
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 01.05.05 Príspevky: 13342 Témy: 1494 Bydlisko: Bratislava | Napísal autor témy JanoF: 16.10.2014 19:23 | |
|
ok vdaka, ja som to skusal podobne a nikdy mi to neslo, ale asi som siel na to dobre, len ten cas za to mohol zjavne skusil som ten select na hostingu na mariadb 5.5 a presiel bez chyb, co je na nom zle? alebo vies nejak lepsie ako spravim vyber podla gps?
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Radsej by si mal ten select optimalizovat, lebo najskor vypocitas kazdemu riadku v tabulke vzdialenost od daneho bodu a potom vyberies cez having len tie, ktore maju zistenu vzdialenost mensiu ako 10. Pri vacsom objeme dat ti to bude trvat strasne dlho. Rychlejsie by bolo dopredu vypocitat hodnoty hranicnych suradnic, na zaklade tohto rozsahu vybrat vyhovujuce data z tabulky a vyfiltrovat tie, ktorych vzdialenost je mensia ako 10. Vyuzitie indexov je dalsie plus...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
"zle" je len to, ze HAVING je urceny na pracu s agregovanymi funkciami, ktore ty v tom vybere nepouzivas... to je take specifikum mysql (a zrejme aj mariadb o ktorej pocujem prvy krat), ze ti dovolia HAVING bez agregovanych funkcii a GROUP BY ale k teme stenley ma pravdu, tak ako je ten vyber napisany databaza nema ziadnu sancu pouzit index. inymi slovami, databaza musi vzdy prejst uplne vsetky zaznamy v tabulke. cim viac dat v nej bude, tym dlhsie vybe rbude trvat (bez ohladu na to aku malu vzdialenost budes hladat)
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Ak taketo "nestandardne" standardne rozsirenie mysql sprehladni zapis (podobne ako pri "nestandardnom" pouziti aliasov) alebo zvysi vykon pri zachovani rovnakeho vystupu, nevidim v tom ziadny problem, skor naopak.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
nechcem sa hadat... aliasy povazujem za standard su podporovane hadam vsade (preto tomu hovorim standard). ale pouzivanie having-u a group-u tymto sposobom (ako sme sa uz dohadovali v inej teme) ja osobne povazujem za podobne "skarede" a nevhodne ako pouzivanie register_globals... funguje to, zjednodusuje to veci ale...
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Aliasy su podporovane asi v kazdom dbs, ale nie rovnakym sposobom, to som tym myslel. V mysql a dalsich mozes napr. v group by rovno pouzit alias uvedeny v selecte, inde musis oproti tomu zlozito pouzit select from select. Kazdy system ma svoje specifika a pouziva rozne odchylky, ci nazvime to rozsirenia, oproti standardu. Kvoli tomu to ale nebudem povazovat za nieco zle. Ak v tom vidim viac pozitiv ako negativ, pouzijem to ako vyhodu, ale dbam o to, aby som pripadne negativa zredukoval, alebo uplne anuloval.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 01.05.05 Príspevky: 13342 Témy: 1494 Bydlisko: Bratislava | Napísal autor témy JanoF: 17.10.2014 12:45 | |
|
stenley píše: Radsej by si mal ten select optimalizovat, lebo najskor vypocitas kazdemu riadku v tabulke vzdialenost od daneho bodu a potom vyberies cez having len tie, ktore maju zistenu vzdialenost mensiu ako 10. Pri vacsom objeme dat ti to bude trvat strasne dlho. Rychlejsie by bolo dopredu vypocitat hodnoty hranicnych suradnic, na zaklade tohto rozsahu vybrat vyhovujuce data z tabulky a vyfiltrovat tie, ktorych vzdialenost je mensia ako 10. Vyuzitie indexov je dalsie plus... vdaka, ale toto je uz asi moc vysoka matika na mna netusim vobec ako take cosi spravit, alebo som asi tomu moc nepochopil...ja mam v danej tabulke len 2900 riadkov a casom mi tam pribudne este asi okolo 5000 (netusim presne kolko ma obci ceska republika) a viac riadkov v tej tabulke nebude, ma aj tak vyznam sa tym zapodievat? jedine co ma napadlo na rychly vyber je vypocitat vzdialenost kazdeho mesta ku kazdemu mestu co tam mam, ale to by tam bolo pekne vela zaznamov
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Tuto to mas celkom prehladne vysvetlene https://www.scribd.com/doc/2569355/Geo- ... with-MySQL - je to sice pocitane v milach, ale prevod na km by nemal byt problem
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 01.05.05 Príspevky: 13342 Témy: 1494 Bydlisko: Bratislava | Napísal autor témy JanoF: 17.10.2014 13:12 | |
|
Ok vdaka, pozriem na to, snad to nebude pre mna uplna spanielska dedina len co si to len tak narychlo prezeram, tak tam maju tabulku s 800k riadkami, ja v tej tabulke nebudem mat ani 1% z ich tabulky, ma vobec vyznam sa tym zaoberat? skusil som dat index na stlpce so suradnicami a vyber sa mi zrychlil z 0.0050sec na 0,0000sec, tak len ze ci ma vobec vyznam sa pri takom malom pocte tymto zaoberat, resp zaoberat sa aspon v mojom pripade mozno aj cely vikend
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
Nema, ale daj tam komentar Nieco ako "toto riesenie si mozem dovolit, lebo mam radovo iba tisice zaznamov"... ak ten kod raz najdu buduce generacie, alebo mimozemstania, budu vediet ze by nemali pouzit rovnaky postup na miliony zaznamov.
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 01.05.05 Príspevky: 13342 Témy: 1494 Bydlisko: Bratislava | Napísal autor témy JanoF: 17.10.2014 13:52 | |
|
Importoval som si to vsetko na webhosting a tam to tiez ide rychlo, takze sa tym asi fakt nema vyznam zatazovat, otazka je ake to bude ak by tam bola vyssia navstevnost ci to nebude vytazovat casom moc databazu, do tohoto sa moc nevyznam veru, tak skusim mrknut aj na to stenleyho riesenie, ci to vobec spravim ked chce niekto vyskusat tak http://www.qlp.sk meno: jano@qlp.sk a heslo: 12345 ale podla mna to generuje celkom rychlo, najprv tam robim vyber z tabulky s mestami podla vzdialenosti, tento vyber vlozim do dalsieho selectu ktorym vyfiltrujem osoby ktore splnaju vsetky tie vybrane mesta, neviem ci idem na to dobre a ci sa to neda nejak efektivnejsie spravit...
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|