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

$result = mysql_query("SELECT COUNT(*) FROM tablaneve");
$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...

<?php
$querys = array(
	'SELECT count(*) FROM table1',
	'SELECT count(1) FROM table1',
	'SHOW TABLE STATUS LIKE "table1"'
);

foreach ($querys as $query) {
	$start = microtime(true);
	mysql_query($query);
	$end = microtime(true);
	echo ($end-$start).' - '.$query.'<br />';
}
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!