On Thu, 16 Oct 2003, Dejan Milenkovic wrote: > I'm not fammiliar with internal MySQL architecture and exactly how things > work but I was wondering what is the most effcient way of spliting reports > over multiple pages. Is there a preformance difference between these two > codes, specialy if there are some complex conditions and joins that should > be done to get result. > > $page=1; // this is set via GET or POST > $items_per_page=10; > $sql="SELECT COUNT(*) FROM table"; > $result=mysql_query($sql) > $number_of_items=mysql_numrows($result); > $start=($page-1)*$items_per_page; > $sql="SELECT * FROM table LIMIT $start, $items_per_page"; > $result=mysql_query($sql) > while ($row=mysql_fetch_assoc($result)) { > // here goes output > }
The above is better. MySQL doesn't return 4,000 pages to PHP, just the 10 you ask for. Faster, cleaner, better. Select count(*) from table is super-fast, so almost no overhead there. > $page=1; // this is set via GET or POST > $items_per_page=10; > $sql="SELECT * FROM table"; > $result=mysql_query($sql) > $number_of_items=mysql_numrows($result); > $start=($page-1)*$items_per_page; > mysql_data_seek($result, $start); > for ($i=0; $i<$items_per_page; $i++) { > $row=mysql_fetch_assoc($result) > // here goes output > } --------------------------------------------------------------------------- Peter Beckman Internet Guy [EMAIL PROTECTED] http://www.purplecow.com/ --------------------------------------------------------------------------- -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php