Tehát kellene egy lista az első 25 sorról, illetve kellene a sorok száma.
Gyorsaság miatt szeretném megúszni 1 lekérdezéssel (2 helyett), de ha a 2 lekérdezés gyorsabb mint az 1 összetettebb, akkor kérlek azt is írjátok meg. Előre is köszönöm.
select *, (select count(*) from hajszalak) from hajszalak;
Ez mukodik sqlite-ban, nincs most keznel mysql, hogy ellenorizzem ott is. Ez nem a leghatekonyabb megoldas mert elvileg a belso query-t ujraszamolhatja minden sorra de szerintem a legtobb db motor lesz annyira okos, hogy lassa, hogy nem fugg a sortol az adat es csak egyszer szamolja ki.
select *, (select count(*) from hajszalak) from hajszalak;
Ez mukodik sqlite-ban, nincs most keznel mysql, hogy ellenorizzem ott is. Ez nem a leghatekonyabb megoldas mert elvileg a belso query-t ujraszamolhatja minden sorra de szerintem a legtobb db motor lesz annyira okos, hogy lassa, hogy nem fugg a sortol az adat es csak egyszer szamolja ki.
De gyorsaság szempontjából ez a kettő nem ugyanaz?
Nem, de az, hogy melyik a gyorsabb az fugg eleg sok mindentol ugyhogy nehez ra altalanos valaszt adni. Fugg pl: milyen messze van a db szerver(ugyanaz a gep, ugyanaz az adatcenter esetleg a fold masik fele) mert a masodik verzio 2x fog elmenni a db-hez lekerdezni. Fugg a lekerdezes optimalizaciojatol, indexektol, tabla merettol es meg valoszinuleg egy rakas dologtol ami most nem jutott eszembe.
Ennek a kérdés szempontjából nem sok értelme van. M. Aladár azt szeretné, hogy lekérdezi az – adott rendezettség és szűrő-feltételek szerinti – első N darab sort, viszont tudni szeretné, hogy összesen mennyi sor van. A te SQL-mondatod ezt az infót nem adja vissza, csak egy sorszámot rendel minden egyes sorhoz. Ráadásul, erre is van már beépített lehetőség, pl. a ROW_NUMBER()window function.
A 8-astól kezdve van ez a lehetőség, Aladár pedig ennél a projektnél* – saját elmondása szerint – azt használ.
Én ha az összes adat számát szeretném lekérni akkor a mysql INFORMATION_SCHEMA tábláját is kihasználnám.
Ami alapvetően jó is, ha tényleg csak szimplán egy tábla bármiféle szűrés nélküli sorainak számára van szükséged. Amint nem egy tábla (hanem pl. egy több táblás JOIN) és/vagy valamilyen kritériumok szerint szűrt eredményhalmaz sorainak számára vagy kíváncsi, nem segít az INFORMATION_SCHEMA lekérdezése. De minek is, amikor egy COUNT(*)-os lekérdezés teljesen megfelelő.
* Persze, lehet, hogy ez a projekt már nem az a projekt.
Ez milyen előnnyel fog járni egy sima "SELECT COUNT(*) FROM hajszalak" lekérdezéshez képest? Azt ugye már nem tudja, amit a kérdező szeretne, hogy egy lekérdezésből kapja meg a két dolgot.