ugrás a tartalomhoz

Tábla sorainak száma MySQL-ben

Anonymous · 2005. Aug. 2. (K), 22.30
Eddig ugye úgy kértem le hogy egy táblában hány bejegyzs van, hogy mysql_num_rows() függvényt használtam...

De mostmár hogy van 30.000 bejegyzés a táblában így elég kínos lekérni az egészet mert meglehetősen lassu...

Van rá egy megoldás hogy egy mezőben kérdezzem le a sorok számát, de nemtudom hogy...

valami SELECT COUNT(*) INTO 'sorokszama' in 'megjelenitesek'

de ez nem megy, mert nem ez a parancs, csak hasonló...

Valaki tud nekem segiteni?
 
1

SELECT COUNT(*)

Hojtsy Gábor · 2005. Aug. 2. (K), 22.36
  1. $result = mysql_query("SELECT COUNT(*) FROM tablaneve");  
  2. $count = mysql_result($result, 0);  
Selectbe hogyan került az INTO? Eddig is FROM-ot használtál, nemde?
2

---

mATTIAS · 2005. Aug. 2. (K), 22.50
Köszi, de azt is megtudom csinálni, hogy az eredményt nem a COUNT(*) nevű mezőben, hanem egy általam deklerált-ban mutassa (Oracle-ben megy, de nem emlékszem a módszerre...)
6

nem mindegy?

Hojtsy Gábor · 2005. Aug. 3. (Sze), 09.40
Úgyis PHP-be töltöd le, azt meg úgy teszed ahogy akarod. Mi lenne ezzel a célod?
3

SHOW TABLE STATUS

T.G · 2005. Aug. 2. (K), 22.54
Neked inkább ez kellene:
http://dev.mysql.com/doc/mysql/en/show-table-status.html

Kis kiegészítés: ugyanez Oracleben, ha már szóba került: SELECT * FROM all_tables
(ehhez megfelelő jogosultságok kellenek...)
4

Biztos?

Bártházi András · 2005. Aug. 3. (Sze), 08.20
Szerintem nem ez kell neki. :) Ez akkor kellhet, ha egyéb, adminisztrátori infókat szeretnél megtudni a tábláról. Ha csak simán a sorok számát, akkor a SELECT count(*) FROM tablazat teljesen jó (és egyébként optimalizált is).

-boogie-
5

Tényleg...

T.G · 2005. Aug. 3. (Sze), 08.59
Hmmm....
Összehasonlítottam, számomra logikus lett volna, ha az admin táblából nyert információhoz jutunk hozzá hamarabb (még akkor is, ha ezzel több adat kerül a birtokunkba), de nem...
  1. <?php  
  2. $querys = array(  
  3.     'SELECT count(*) FROM table1',  
  4.     'SELECT count(1) FROM table1',  
  5.     'SHOW TABLE STATUS LIKE "table1"'  
  6. );  
  7.   
  8. foreach ($querys as $query) {  
  9.     $start = microtime(true);  
  10.     mysql_query($query);  
  11.     $end = microtime(true);  
  12.     echo ($end-$start).' - '.$query.'<br />';  
  13. }  
Eredmény:
0.00027108192443848 - SELECT count(*) FROM table1
0.00018596649169922 - SELECT count(1) FROM table1
0.00055789947509766 - SHOW TABLE STATUS LIKE "table1"
7

Na megvan

mATTIAS · 2005. Aug. 3. (Sze), 16.55
Nem tököltem, vettem egy sql könyvet....

amit én kerestem az egyébként ez volt:

select COUNT(*) ideiglenesmezo FROM tablaneve
8

jó döntés volt

Hojtsy Gábor · 2005. Aug. 3. (Sze), 20.53
Csak így tovább!