Új hozzászólás Aktív témák
-
pittbaba
aktív tag
Sziasztok!
Androidra fejlesztek BKV programot, ennek az adatbázisához kellene finomításhoz segítség, tipp nekem.
A BKV kiadja a teljes menetrendet a Google GTFS adatbázis formátumban.
Ebből készítek egy programmal egy SQLite adatbázisfájlt, amit az alkalmazás felhasznál az adatok kivételére.
Ez egy 159Mb-os adatbázis file, egy telefonnak elég leterhelő, sajnos egy lekérdezés több perc jelenleg.Gps koordináták alapján próbálom kiszedni a user melyik megállóban áll, és milyen járatok haladnak át azon a megállón.
Három táblát kell ehhez felhasználnom:
stops táblában vannak a megálló nevei és a GPS koordináták
stop_times táblában az időpontok vannak megadva, melyik percben melyik megállóban melyik járat megy(id)
trips táblában vannak a trip id-hoz tartozó nevek.Egyértelmű, hogy a stop_times tábla nagyon nagy, úgy emlékszem, hogy 200 000 sor körül van, e miatt nagyon lassú lesz a lekérdezésem. JOIN-al összekapcsoltam a három táblát, az eredmény több perc után, de megérkezik helyesen egyébként.
Hogy lehetne gyorsítani a lekérdezést?
Az adatbázis feldarabolása nem jó, mert megállókra lehetne szétbontani, de az is 4000 fájlt jelentene, ami megint nem megoldás.Mivel létre kell hozni egy külön SQLite adatbázis fájlt, nehéz bármit is változtatni az eredeti formátumon, mivel a GTFS fájlok sima CSV formátumú fájlok, nem könnyű dolgozni velük.
Milyen tippekkel tudtok segíteni?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Itt a BKK GTFS db, csak hogy ne kelljen keresgélni:
[link]Példák:
stops:
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,wheelchair_boarding
F00001,"Mihály utca",47.486079,19.034561,,,2stop_times:
trip_id,arrival_time,departure_time,stop_id,stop_sequence,shape_dist_traveled
A651191,03:46:00,03:46:00,F04679,010,0trips:
_id,service_id,trip_id,trip_headsign,direction_id,block_id,shape_id,wheelchair_accessible,trips_bkk_ref
6100,A65119ASZGPP-021,A651191,"Örs vezér tere M+H",1,A65119ASZGPP-021_10A,1226,2,61001A gps koordináta kerekítés elve megvan, de mivel az szerintem még lassabb lesz, egyelőre megálló névre keresek rá:
SELECT stop_name,stops._id,stop_times._id,trips._id FROM "+MYDATABASE_TABLE+" JOIN stop_times ON stops.stop_id= stop_times.stop_id JOIN trips ON stop_times.trip_id = trips.trip_id WHERE stops.stop_name LIKE '%"+searchstr[0]+"%' GROUP BY stop_times.stop_id"
Ha azt kérem: Deák tér, meg is kapom vissza, szóval megleli, de kb 10 perc alatt, mert a stop_times tábla nagyon nagy és végig kell nyálazza. Olvastam, hogy létre lehet hozni index-et a tábla oszlopaihoz, milyen oszlopokhoz érdemes? Ez után az eredeti lekérdezést kell használni továbbra is, csak az adatbázison gyorsít valamennyit?
Nem tudtam jól megfogalmazni a módosítással mit akartam mondani. A lényeg, hogy lenne olyan megoldás is, hogy a három táblából csinálok egy leegyszerűsítettet, melyik GPS koordinátákhoz mely járatok tartoznak, viszont mivel az alapformátum CSV és a célformátum mysqlite db fájl, nehéz olyan scriptet írni ilyen sok sorú fájlnál, ami nekem ezeket összemergeli egy táblába logikusan. A kész db táblákból csinálni egy újat is lassú, mert ugyanúgy soronként kell haladni.
UI: A GPS koordináták kerekített lekérdezését így oldom meg, hogy legyen hibahatár:
SELECT * FROM "+MYDATABASE_TABLE+" WHERE ( stop_lat > '"+latstart+"' AND stop_lat < '"+latend+"' ) AND (stop_lon > '"+lonstart+"' AND stop_lon < '"+lonend+"')Egyszerű, működik, de gondolom bazi lassú lesz :S
[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1599 üzenetére
Látatlanban? Ott van minden már, épphogy az adatbázist nem csatoltam
Indexelni melyik táblákat érdemes? Egyelőre csak a stop_times.stop_id-t, és a stops.stop_name -t indexeltem. Explain-t nem vágom, guglizom, nézem, de jöhet tipp!PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1601 üzenetére
Rendben az Explain kimenetét majd mutatom, ha egyszer kikergeti.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1599 üzenetére
Az explain kimenetéből mire vagy kíváncsi? Nem tudom copyzni a kezelőprogrammal sajnos, de ami fontos azt bepötyögöm.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Wow! Köszönöm a rengeteg infót, átrágom rajta magamat részletesen is.
Első körben annyit, hogy azért lenne jobb a három tábla összekapcsolása, mert nekem GPS alapján az lenne jó, ha a a lehetséges járatnevek jönnének ki, ne kelljen megállót választania külön. Általában az ember azt tudja mire akar, mire kell felszállni és nem a megálló pontos nevét.A group-ban teljesen bizonytalan voltam, azt köszönöm hogy tisztáztad a fejemben.
Az indexelésekkel kezdem, majd a stop_times feldarabolása lesz következő lépés az optimalizálás terén, én is azt találtam jónak,ha stop_id alapján szedem széjjel.Még egyszer nagyon köszönöm! Ha bármilyen ötleted van még ,írd meg.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Igen, ez lesz a megoldás erre, offline kevesebb szolgáltatás...
Sajnos valóban egy kvnyi idő egy lekérdezés még így is, darabolnom kell, vagy egyszerűsíteni.
Turista fejjel gondolkozok. Annak lehet nem megy a mobilnetje itthon, ezért akarom vmi offline módon megoldani.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szia!
Igen, pont ezzel kísérleteztem az elmúlt órában, hogy külön vettem a lekérdezéseket megnézem mi mennyi idő, de sajnos egy sima alap select is 10-30mp míg lefut a fájlban, nincs más választás.
Az indexel kapcsolatban sajnos nem értem a kérdésedet? Betöltöttem az adatokat? (Azok benne vannak már az indexelés előtt )
Hogy érted ezt?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
szerintem semmit sem gyorsított, valószínűleg ezért.. nem is értettem hogy működhet ilyen gyorsan az indexelés.. most már értem tábla létrehozáskor kell indexelni és úgy nyomni a konvertálást. Akkor belepötyögöm a konverter appba, hogy indexeljen és lefekvés előtt elindítom, hátha gyorsabb lesz a db.
Szerinted ha csinálok egy selectet where nélkül, összejoinolva a táblákat, majd a kimenetet feldolgozom úgy, hogy építek belőle egy újabb összegző táblát az nagyon gáz lesz, vagy az is egy lekérésnyi időt vesz majd igénybe? Nem tudom ez a része hogy működik.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Na a fentebb említett problémával még mindig küzdök, nézem mi lehetne jó megoldás. Meguntam a 10 perces lekéréseket, serveren tesztelnék sebességet mysql-el hogy tudjak haladni, viszont a GTFS adatbázisát sehogy nem bírom betolni a távolni server adatbázisába.
Sajnos sima havidíjas tárhelyem van, semmi ssh lehetőség, így nem tudom megoldani azt, hogy a 150 mb-os adatbázist beimportáljam. A phpmyadmin lenne az egyetlen lehetőségem, de az sem tudja fogadni a 120 megás stops_times.txt-t. Csináltam az itthoni lomhább serveren egy adatbázist a GTFS-ből, SQL formátumban exportáltam, ezt a fájlt szeretném valahogy a távoli serverbe bepasszírozni, milyen megoldásokat tudtok ajánlani?
Próbáltam a LOAD DATA-val de nincs jogosultságom írni az adatbázist ezzel. Gondolom külön acc vonatkozik arra ami lenyúl a winyóra.Találtam olyan megoldást, hogy csinálok egy php fájlt, és mysql_query("source db.sql") parancsal beszippantom a file-t, de szintaktikai hibát ír:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SOURCE db.sql' at line 1
Elvileg ennek mennie kell? Hol a szintaktikai hiba? Vagy az elérési úttal lehet gondja? Csak az meg io hiba nem szintaktika.
Hogy lehetne ezt a 150 megát php-n keresztül megetetni vele? Már kifogyok az ötletekből
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1621 üzenetére
Jah csak az a bajom h az eredeti feladattól már annyira eltértem, hogy ilyen még az életben nem volt, most már ott tartok h a 100. szálon most adatbázis darabolós fájlonként egyesével importálgatósat kell játszani, ez botrány, hogy nem tud az ember egy 150 megás adatbázist átmozgatni szerverről szerverre. Megérteném 100 gigánál, de így...
Épp keresem, de hátha gyorsabban érkezik a válasz: mysqldump-nál van olyan, hogy táblánként dumpolja fájlba, mert találtam egy megoldást, de a maximum memóriaméretet 3 megával túl lépem, úgyhogy elég az egyik táblát külön venni, és elvileg megoldható lesz ( aztán lehet hogy tévedek ).
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz pittbaba #1622 üzenetére
Megvan db név után tábla névvel kell paraméterezni a mysqldump parancsot.
Kíváncsi vagyok így már megeszi e.
Amit próbálok php-ból, megosztom, hátha segít, vagy kiderül hogy rossz ( most kb 40 perc míg feltöltődik az új sql fájl, addig nem tudom tesztelni )$query = file_get_contents("filename.sql");
$ret = mysql_query($query) or die(mysql_error());PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1625 üzenetére
Megnézem, remélem működni fog, köszönöm. Kerülni szerettem volna a plusz patkolásokat, azért írtam, hogy így is olyan messze vagyok az igazságtól, hogy nem szívesen veszek bele még még még plusz lépéseket, eszközöket, de remélem ez működni fog, majd reportolom
A megoldást ahogy írtam is, abban reméltem, hogy ha táblákra szétszedem a fájlokat, akkor már menni fog, mert kevesebb műveletet kell futtatnia egy kérés alatt. Egyel jobb is lett, viszont lett helyette másik korlát:
Got a packet bigger than 'max_allowed_packet' bytesEzért most jön a tipped kipróbálása.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Nem sokkal lőttél alá a teljesítménynek, nincs alám pakolva egy erőmű, és mivel a stop_times tábla 2,5 millió soros ( mint kiderült.. ), még azt is megizzasztja. Helyi szerveren annyi előnyöm van, ha csinálok egy 10 perces lekérést, le tudom lőni az sql szervert, és nem kell várnom timeoutig minden alkalommal
A szolgáltatóm phpmyadminja nem tud ilyet sajnos, én is ezt kerestem volna
Tudom, hogy csv-t is tud fogadni, viszont nem vágja hogy az első sorából táblát kéne csinálni, így gyorsabb az sql, mint megint kézzel megcsinálni a táblákat...PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szia! Ez jónak tűnik, bár hasonlót csináltam én is, most egy egyben sql fájlt szeretnék berántani, hogy már ne kelljen táblákat csinálgatni.
A karakter cseréknél szerintem lenne gond egyébként, ahogy emlékszek, nekem ennyi csere nem volt elég valahol elszállt.
Asszem a stops.txt-ben van olyan állomásnév, ahol pl: "Csepel, Kis csőröge, Nagyállomás" a tartalom, replace után: '"Csepel',' Kis csőröge',' Nagyállomás"' És már rögtön több az érték mint az oszlop a sorban.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1625 üzenetére
Köszönöm, hogy rám szóltál, a link alatti kis php script nagyon szépen működik. Gyors, szép kód, jó megoldás!
[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Újra itt, még mindig nyitva a [link] kérdésem, sok tanácsot kaptam az óta, de túl sok eredményt nem sikerült elérnem.
Szeretném valamilyen módszerrel leegyszerűsíteni az adatbázist, hogy kezelhetővé váljon.
Sajnos a 2,5 millió soros stop_times tábla az egyetlen módja, hogy összekapcsoljam bármelyik tábla adatait egy másikkal.
Röviden: GPS koordináta alapján szeretném megkapni a koordinátákhoz tartozó megállóhoz tartozó járatokat.
Ehhez az út: stops Join stop_times join trips join routes
Sajnos fél úton máris kiakad a mysql szerver, a routes táblához joinolva, már 1-es limitnél is hibát kapok vissza.
Ha csak a trip id-t akarom a stop_name mellett, 1000-es limitnél már hibát ír:SQL-kérés: Dokumentáció
SELECT stop_name, trips.trip_id
FROM stop_times
JOIN stops ON stop_times.stop_id = stops.stop_id
JOIN trips ON stop_times.trip_id = trips.trip_id
LIMIT 1000MySQL jelzi: Dokumentáció
#1317 - Query execution was interruptedSzerintetek milyen úton lenne érdemes leegyszerűsíteni a táblákat ahhoz, hogy a fent leírt feltételeket tudja az adatbázis teljesíteni.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1633 üzenetére
A "hatalmas SQL adatbázis importálása sql fájlból probléma" megoldódott teljesen! Köszönöm, ez volt a leghelyesebb megoldás!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Nem szükséges, csak kísérletezek ha már ..
Most egyelőre ott tartok, hogy négy lépésben egyszerűsítem a táblákat:
CREATE TABLE xy AS (SELECT col FROM a JOIN b .... )Minden szépnek és jónak tűnt, de valami mégsem jó, pl a Blahánál nem jár a 7-es busz az én adatbázisom szerint
Még át kell gondolom ezt kicsit...
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1642 üzenetére
Hallgattam a tanácsokra, de szerintem az indexelés dolgot rosszul csinálom, kezd gyanús lenni.
Egyébként már felpakoltam idegnagy szerverre, szóval a vas része megoldódott, nem bosszantom tovább magam az arm procival,csak ha lesz egy céljaimnak megfelelő adatbázis. ( Bár android okosításba kezdtem, SQL feladat lett belőle ).Az indexeléssel kérdés:
Sajnos az id-k néhol betűt is tartalmaznak, így csak fulltext indexet enged a mysql. Fulltext indexet ráteszem a kellő mezőkre, ez is megvolt, de nem gyorsult érezhetően.
Újra kell indexeltetni valamilyen paranccsal a táblát? Vagy az adatokat is teljesen újra kellene tölteni a táblába?
Fórumon írnak sok mindent itt-ott, azt találtam REPAIR-el valahogy megoldható hogy a már táblában lévő tartalmat újraindexelje a mySQL.Indexelt táblákat dumpoltam ki a saját szerveremről a távoliba, de most ahogy nézem az export file-t nincs benne indexelés, nem hozta az export, így újra kell az egészet.
Végre Mysql-en tudok explain kimenetet adni:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE routes ALL NULL NULL NULL NULL 313
1 SIMPLE trips ALL NULL NULL NULL NULL 134307 Using where; Using join buffer
1 SIMPLE stop_times ALL NULL NULL NULL NULL 2555175 Using where; Using join buffer[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszi mindenkinek az indexelés miatti nyaggatást, végig azt szúrtam el, tiszta lappal újra kezdtem, indexelve, végre tök gyorsan lefutnak a lekérdezések!
Kaptam a GTFS fórumon egy okosságot, arra a kérdésemre a választ, hogyan lehet kiszedni a GTFS formátumból azt, hogy egy megállón milyen járatok haladnak át (Az összes járat összes megállóját), megosztom veletek:
create table rstops as
select route_id, direction_id, a.stop_id, stop_name from
(select distinct route_id, direction_id, stop_id from stop_times as st, trips as t where st.trip_id=t.trip_id)
as a, stops as b where a.stop_id=b.stop_id order by 1,2;PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Az most fog eldőlni, majd reportolom. Egyébként ha nem is lesz gyorsabb, de legalább létre tudtam hozni egy jóval kisebb táblát, amiben benne vannak azok az adatok amik nekem kellenek. Az indexelés segített, hogy egyáltalán bármit tudjak kezdeni az adatbázissal 10-es limit nélkül
Kérdés:
Indexelésnél van e különbség, melyik a helyesebb:Új tábla hozzáadásánál KEY `stop_id` (`stop_id`),
vagy a tábla létrehozása után a CREATE INDEX trips_tripid_idx ON trips(stop_id) ?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1657 üzenetére
Köszi! Az angolom még mindig nem perfect, ezért bizonytalan vagyok, hiába találom meg én is ezeket, de okay.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1660 üzenetére
Lesz? tizenx éve ezzel foglalkozok, és ebből élek, több szálon az rendben, nem egy valamihez értek nagyon, hanem a legtöbb igényelt munkát el tudom látni, és ennyi. Az hogy a msql legbelsőbb bugyraiban nem tudom, hogy a key, és a create index között van e időben vagy eljárásban különbség, nem okozott gondot még A legtöbb programozási nyelvet angolul tanultam én, az megvan, hogy mit kell nézni, meg bambulom a példákat, és ha átírok valamit mi változik szenvedések, viszont egy-egy komolyabban megfogalmazott mondat fölött átsiklik a tekintetem, ezért jobb, ha megkérdezem, de már kezdem megbánni
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1662 üzenetére
Sorry, úgy gondoltam, alapból feltételezitek, hogy nem kérdezek olyankor, ha legalább minimálisan nem néztem utána, de legközelebb jelzem ezt.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz Sk8erPeter #1664 üzenetére
Elég sokszor megtörténik
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok! Mit rontok el?
Van a kérésemben egy feltétel exception_type <> 2, ha a kérésembe beteszem ezt a feltételt, akkor üres sorok jönnek ki, ha kikommentelem, akkor kijönnek az eredmények, olyanok is, amiknél az exception_type értéke NULL. Miért nem igaz a feltétel mégsem?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Elég érdekes kérdésbe futottam:
Apróhirdető oldal, szűrések.
Vannak kategóriák, a kategóriáknak pedig sajátos mezői, pl ha ingatlant választ, akkor kijön h szobák száma, ha autót választ akkor futott kilóméter stb, kb ezer ilyen custom mező jelenhet meg.
Mivel ez nem lehet egy táblában termékenként 1000 oszlopban tárolni, ezért a custom paramétereket úgy tárolom, hogy egy külön táblában elmentem az adott hirdetés id-ját, az adott paraméter nevét (custom_szobakszama, custom_kilomterek), és a hozzá tartozó értéket.
Ez rendben is van, menti szépen, visszatölti szépen szerkesztésnél stb stb...Kérdésem az lenne, hogy hogy tudok ez alapján szűrni, keresni?
Pl:
Hirdetések tábla:
id,feltöltő_id,hirdetés címe,hirdetés szövege,dátum,kategória1,kategória2,kategória3,
1,110,Ingatlan hirdetés,Hirdetésem szövege,2015.10.10,45
2,110,Autó hirdetés,Hirdetésem szövege,2015.10.11,48Custom mezők tábla
id,hirdetés_id,mező_neve,érték
1,1,szobak_szama,3
2,1,terulet,32
3,2,kmora,10000
4,2,loero,10Ossze van joinolva 3 kategora tabla, es a user tabla is, ebbe a lekérdezésbe kellene megoldani, hogy WHERE-el keresni tudjak a customs mezők tábla alapján is. Pl ha az összes olyan hirdetést akarom ahol a szobak_szama =3 azt hogy tudom lekérni?
Előre is köszi.
Esküszöm megkeresném, mint mindig mindent, de ezt most fogalmam sincs hogy írjam be[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok! Ritkán jövök egy egy brutál kérdéssel, hátha most is belöktök a jó irányba.
Weblap, termékek feltöltése. Minden kategóriának és alkategóriának saját custom paraméterei ami felvihető a termékhez (monitornál átmérő, autónál köbcenti stb).
Mivel végtelen nagy táblát kapnék, ezeket a custom adatokat külön táblákban tárolom.
Ezeket ki kell nyerjem, így egy kérés már 5mp.Így néz ki a lekérés:
SELECT SQL_CALC_FOUND_ROWS
`apro_ads`.id AS ad_id,
`apro_ads`.*,
`apro_users`.*,
`apro_cat_level1`.*,
`apro_cat_level2`.*,
`apro_cat_level2`.*,
`apro_ad_favorites`.advert_id AS is_favorite,
`apro_ad_favorites`.user_id AS favorite_user_id,
transactions.id AS trans_id,transactions.upgrade_type,transactions.auto_top,transactions.upgrade_duration,transactions.payment_status,transactions.payed_time,transactions.ad_showed
,customs_maganszemely.element_value,customs_kinal_keres_kiadna_berelne.element_value,customs_szobak_szama.element_value,customs_meret.element_value,customs_allapot.element_value,customs_futes.element_value,customs_emelet.element_value,customs_lift.element_value,customs_ingatlan_tipusa.element_value,customs_kilatas.element_value,customs_erkely.element_value,customs_butorozott.element_value,customs_parkolas.element_value,customs_energiatanusitvany.element_value
FROM apro_ads
JOIN `apro_users` ON apro_ads.owner_id = `apro_users`.id
LEFT JOIN `apro_cat_level1` ON apro_ads.cat_level1 = `apro_cat_level1`.id
LEFT JOIN `apro_cat_level2` ON apro_ads.cat_level2 = `apro_cat_level2`.id
LEFT JOIN `apro_cat_level3` ON apro_ads.cat_level3 = `apro_cat_level3`.id
LEFT JOIN `apro_ad_favorites` ON apro_ads.id = `apro_ad_favorites`.advert_id
LEFT JOIN (SELECT ad_id AS max_ad_id,MAX( id ) AS max_trans_id FROM `apro_transactions` GROUP BY max_ad_id) AS max_trans_id ON max_trans_id.max_ad_id = apro_ads.id
LEFT JOIN `apro_transactions` AS transactions ON (transactions.id = max_trans_id.max_trans_id)
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_maganszemely') AS customs_maganszemely ON `apro_ads`.id = customs_maganszemely.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_kinal_keres_kiadna_berelne') AS customs_kinal_keres_kiadna_berelne ON `apro_ads`.id = customs_kinal_keres_kiadna_berelne.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_szobak_szama') AS customs_szobak_szama ON `apro_ads`.id = customs_szobak_szama.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_meret') AS customs_meret ON `apro_ads`.id = customs_meret.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_allapot') AS customs_allapot ON `apro_ads`.id = customs_allapot.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_futes') AS customs_futes ON `apro_ads`.id = customs_futes.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_emelet') AS customs_emelet ON `apro_ads`.id = customs_emelet.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_lift') AS customs_lift ON `apro_ads`.id = customs_lift.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_ingatlan_tipusa') AS customs_ingatlan_tipusa ON `apro_ads`.id = customs_ingatlan_tipusa.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_kilatas') AS customs_kilatas ON `apro_ads`.id = customs_kilatas.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_erkely') AS customs_erkely ON `apro_ads`.id = customs_erkely.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_butorozott') AS customs_butorozott ON `apro_ads`.id = customs_butorozott.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_parkolas') AS customs_parkolas ON `apro_ads`.id = customs_parkolas.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_energiatanusitvany') AS customs_energiatanusitvany ON `apro_ads`.id = customs_energiatanusitvany.item_id
WHERE `apro_ads`.`cat_level1` = 2 AND `apro_ads`.`cat_level2` = 6 AND a_town ='Budapest' AND `customs_maganszemely`.`element_value` = '1' AND `customs_kinal_keres_kiadna_berelne`.`element_value` = '1' AND a_status='A'
AND transactions.payment_status = 'payed'
AND DATE_ADD(transactions.`payed_time`,INTERVAL transactions.`upgrade_duration` DAY) >= NOW()
AND a_status='A'
AND `apro_users`.status = 'A'
GROUP BY ad_id
ORDER BY transactions.ad_showed ASCCsatoltam egy explain kimenetet, hogy lássátok mi van indexelve.
[link][ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
Új hozzászólás Aktív témák
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Az USA nem akarja visszafogni Kína növekedését
- PlayStation 5
- Magga: PLEX: multimédia az egész lakásban
- Apple notebookok
- Azonnali processzoros kérdések órája
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Linux - haladóknak
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- További aktív témák...