- Honor Magic V2 - origami
- Duotts F26 - megoldjuk erőből
- Redmi Note 13 Pro+ - a fejlődés íve
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Samsung Galaxy S23 Ultra - non plus ultra
- Holnap mutatkozik be a HMD Pulse Pro
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Realme 9 Pro+ - szükséges plusz?
- Xiaomi 12X – kicsi a bors és hűvös
- Pletyka: Gagyi volt, beszünteti az Apple a FineWoven kiegészítők gyártását
Hirdetés
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Új gamer monitorral lép színre az ASRock
ph A PG27QFT2A sík, 27 hüvelykes, 180 hertzes, QHD IPS LED LCD panelt kapott.
-
Eredeti dizájnnal tér vissza idén a Nokia 225 4G
ma Három és fél éve is készült friss Nokia 225 4G-s upgrade-del, az idei verzió viszont visszahozza az eredeti formatervet is.
Új hozzászólás Aktív témák
-
sky77
aktív tag
Ezt így hirtelen kicsit nehéz átlátni... Talán jobb lenne előről kezdeni a lekérdezést, úgy, hogy elmondod, mi a feladat (milyen adatokat szeretnél visszakapni) és ehhez milyen táblák (ill. mezők) állnak rendelkezésre. Biztosan lehetne ezt is optimalizálni, de valahogy nem visz rá a lélek, hogy átbogarásszam.
''Emberek, vessetek a mókusok elé!''
-
sky77
aktív tag
Küldtem választ, de ide is leírom, biztos, ami biztos.
Szerintem, ha mondjuk left join-nal egy egyértelmű megfeleltetést tudsz felállítani a táblák között, kisebb adathalmazból fog dolgozni a select, így van rá esély, hogy gyorsabb lesz, ugyanisselect * from a,b
visszaadja az összes olyan elemet, ami mind a-nak, mind b-nek halmaza, úgy, hogy b összes eleméhe rendeli a összes elemét. Így aztán a where feltétel egy adott esetben akár óriási adathalmazból választja ki azokat a sorokat, akik a kitételnek megfelelnek.
Ha pl így oldod meg:select * from a
left join b on b.x=a.x
tehát már az összekapcsolásban szerepel a ''where feltétel'', eleve kisebb adathalmazt kapsz, amit nem is kell tovább szűkíteni.
Próbáld meg így, hátha segít valamicskét. Addig is nézegetem a kódot, ha időm engedi.
Szerk.: Lehet, hogy célszerű lenne, ha kevesebb adatot hozna a select, így nem kéne annyi táblát összekapcsolni, s a bővebb információk csak akkor kerülnének lekérdezésre, ha a felhasználó úgy kívánja (pl. gombnyomásra). Már ha a feladat engedi, persze.
[Szerkesztve]''Emberek, vessetek a mókusok elé!''
-
sky77
aktív tag
Így gyorsabb? Lefut egyáltalán? Én sajna nem tudom kipróbálni.
SELECT O.ORVOS_ID, O.VEZNEV1, O.KERNEV1_1, O.KERNEV1_2,
I.INTEZMENY_NEV, I.IRSZ, I.TELEPULES, I.CIM,
OIS.TELEFON1, OIS.TELEFON2, OIS.MELLEK,
ORR.MEGYE, ORR.ORSZAGRESZ
FROM ORVOS AS O
left join orvos_int_sw as ois on ois.orvos_id=o.orvos_id
left join intezmeny as i on i.intezmeny_id=ois.intezmeny_id
left join telepules as t on t.tel_nev=i.telepules
left join orszagresz as orr on orr.megye=t.megye
left join orvos_szakvizsga_sw as oss on oss.orvos_id=o.orvos_id
left join szakvizsga as sz on sz.szakvizsga_id=oss.szakvizsga_id
WHERE SZ.SZAKVIZSGA=PSZAKVIZSGA and O.ACTIVE = 1
AND O.ORVOS_ID NOT IN
(SELECT ORVOS_ID FROM EREDMENY
WHERE EREDMENY_TIP_ID IN (11, 12, 13))
ORDER BY ORR.ORSZAGRESZ, ORR.MEGYE, I.TELEPULES, I.CIM;
Talán egy-két táblát is össze lehetne vonni, első ránézésre nem teljesen tűnt indokoltnak, hogy külön táblában vannak adatok, persze lehet hogy tévedek.
Pl.:
orvos_szakvizsga_sw --> orvos
orszagresz --> telepules
[Szerkesztve]
[Szerkesztve]''Emberek, vessetek a mókusok elé!''
-
sky77
aktív tag
Mysql-hez sajna a legkevésbé sem értek, viszont errefelé érdemes lehet körülnézni: Bővebben: link
Ezen belül is talán ez a legmegfelelőbb topic: Bővebben: link
Remélem tudnak segíteni.''Emberek, vessetek a mókusok elé!''
-
L3zl13
nagyúr
Első körben talán valahogy így...
Persze lehet, hogy van jobb megoldás.
SELECT * FROM brick, [SELECT CONCAT(nev, region) as nev_reg FROM brick GROUP BY nev_reg having count(*) = 1]. AS [nev_reg] WHERE nev_reg = CONCAT(nev, region);
Jah, CONCAT MySQL függvény. Nem tudom te mit használsz...
[Szerkesztve]Aki hülye, haljon meg!
-
Goose-T
veterán
A WHERE feltételbe rakott SELECT nagyon lelassítja a lekérdezést, mivel minden egyes sornál lefuttatja a feltételben szereplő SELECT utasítást. Ha az a.id és a b.id megfeleltethető egymásnak, akkor egy LEFT JOIN-os lekérdezéssel közösíteni kell a két táblát majd egy külső SELECT-tel kiválogatni a megfelelő rekordokat, valahogy így:
SELECT * FROM (SELECT a.id as aid, b.id as bid FROM
a LEFT JOIN b ON a.id = b.id) WHERE bid IS NULL
[Szerkesztve]Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar
Új hozzászólás Aktív témák
- Xbox Series X|S
- E-roller topik
- Futás, futópályák
- Luck Dragon: Asszociációs játék. :)
- Amlogic S905, S912 processzoros készülékek
- Milyen légkondit a lakásba?
- Szünetmentes tápegységek (UPS)
- Honor Magic V2 - origami
- Sony MILC fényképezőgépcsalád
- Megrendszabályozza a Pornhubot az EU
- További aktív témák...
- Használt Nintendo Wii és Wii U játékok - COD, LEGO, Mario, Sonic - STB!
- Galaxy A72 128GB / 8GB! Dualsim, Kártyafüggetlen
- Magyar Apple iPad Air vagy Pro 11" Magic Keyboard billentyűzet tok
- i5 9600KF eladó, ha kell alaplappal.
- Ds, 3Ds játékok - Ds Stylusok, Ds Lite fóliák, töltők, - R4 Wood, R4 Gold, R4 SDHC is!