( TCH | 2020. 10. 12., h – 09:56 )

> A kézzel leprogramozást úgy értem, hogy lefuttatod az alqueryt és annak az eredményét kiveszed resultsetként, majd visszafeedeled a következő query-be úgy, hogy az értékeket sorba beleírod a lekérő SQL-be.

És ezt hogyan csináljam? Temporary tables-t már próbáltam, de csak még jobban belassított mindent. Olyat is próbáltam, hogy leszűröm a két segédtáblát és az ID-ket használom a fő query szűrésére (ez az OP-ban is benne volt, ez a két query), de rossz végeredményt kaptam.

> További ötlet lehet, hogy a max date bejegyzést a salary és a title táblában is egy boolean-nal megjelölöd. Így nem kell ezeket mindig kinyálazni, egyből rendelkezésre áll - pláne, ha be van indexelve ez a flag.

De ezzel ugyanott vagyok, ahol most, mert a `from_date` is indexelve van.

> Az indexelésnél lényeges, hogy ne egy adat alapján legyen, hanem a teljes halmazon, amire a lekérdezés vonatkozik. Ugyanis ha egy-egy oszlopon van index, és kettőre vonatkozik a kérdés, akkor még mindig két eredményt őssze kell fésülni. Azonban ha például van egy (latest_entry, salary) összetett indexed, akkor egy where latest_entry and salary>10000 kérdés teljesen indexből kiszolgálható.

Ebben lehet, hogy igazad van, csak épp nem piszkálhatok hozzá a szerkezethez.

> A Duplicate entry fogas kérdés. Akármelyik al-lekérdezésnek ha több értéke van véletlenül, az okozhatja. Például a department, ha a dept_no véletlenül nem zárja ki az ismétlést. Vagy ha a date alapú lekérdezésben van két egyforma dátum (ez valószínűbb) és az duplikált sort okoz. Nem logikus, hogy valakinek egyazon dátumon két különböző címe van, de ez a tipikus, hogy a való életbeli adatbázisok tele vannak ilyenekkel. Pláne amiket emberek töltenek fel! Úgy kell megfogalmazni a query-ket, hogy ezek ne okozhassanak bajt! Tesztelni úgy lehet, hogy a lekérdezést lefuttatod akár kulcs nélküli táblába, majd abban keresel duplikátumot valahogy így: https://chartio.com/learn/databases/how-to-find-duplicate-values-in-a-s…

Köszi az ötletet, ezt kipróbálom. (Mondjuk itt ezen a "cache" táblán, amit csináltam, egyedül a PRIMARY KEY-en nem lehet ismétlődés és azon nincs is.)