Web Hosting Talk







View Full Version : mysql_num_rows() - Bad?


splatcatballa99
12-08-2007, 02:06 PM
I just got to thinking, does if you have a table with 19000 rows, and you use mysql_num_rows , isn't that going to be a very slow query and slow down loading times?

Whats a better way to do this?

ThatScriptGuy
12-08-2007, 03:59 PM
mysql_num_rows only returns the number of rows in a result set. It doesn't go through a table row by row and increment a counter.

Steve_Arm
12-08-2007, 04:13 PM
Don't worry about that for 2 reason.
1) Fetching rows from tables with a reader that advances forward one record
is one of the fastest operations on a database server.
2) You will never have to fetch all the table records at once.

splatcatballa99
12-08-2007, 05:27 PM
Don't worry about that for 2 reason.
1) Fetching rows from tables with a reader that advances forward one record
is one of the fastest operations on a database server.
2) You will never have to fetch all the table records at once.

Your second reason is false, I will have to do that, that is why I'm asking.

Steve_Arm
12-08-2007, 05:44 PM
I actually though about it or else you wouldn't be asking.
Do you have to do this for every page load? If so there must be a harder but more efficient way to do it.

splatcatballa99
12-08-2007, 06:08 PM
Well I'm coding a forum and in the info center at the bottom will be a total number of threads, and that willl load whenever the index is loaded.

My idea I had earlier is have a file/ or a table and when a new thread is created just update that number, I think that would deffinately be faster.

jstanden
12-08-2007, 07:04 PM
If you're just selecting a count(*) it's going to use the table index. You could store the total number of threads in a table and increment it relatively (SET n=n+1), but there is probably no need.

You don't want to "SELECT *" and mysql_num_rows(), you want to "SELECT COUNT(*)". It will always return one row with a number.

holmesa
12-10-2007, 11:01 AM
SELECT COUNT(id) (I would not use asterisk at all) is much better then using mysql_num_rows unless you need to perform is on a complex query.

TonyB
12-10-2007, 11:20 AM
SELECT COUNT(id) (I would not use asterisk at all) is much better then using mysql_num_rows unless you need to perform is on a complex query.

Bang on right here


count will use the index and will be significantly faster. When doing things like pagination it's much better to use count opposed to a complex query multiple times.

There are uses for mysql_num_rows but in this case it's not one of them.