Hello Monty, With your help I'm getting the understanding I was looking for, thank you.
On 27 January 2002 23:23, Michael Widenius wrote; > Hi! > > >>>>> "Emmanuel" == Emmanuel van der Meulen <[EMAIL PROTECTED]> writes: > > <cut> > > >> This will of course slow down any query significantly, if the WHERE > >> clause matches a lot of rows, but should still be faster than: > >> > >> - retrieving all rows to get a count. > >> or > >> - Do two queries: > >> SELECT COUNT(*) FROM ... > >> SELECT .... LIMIT X > > Emmanuel> Monty, when I do two queries; > Emmanuel> 1. select * from memberships,membershipstracking where > Emmanuel> memberships.email=membershipstracking.email order by > Emmanuel> membershipstracking.activitytimestamp desc limit 50 > Emmanuel> 2. SELECT COUNT(*) FROM MEMBERSHIPS > Emmanuel> both queries run faster than with SQL_CALC_FOUND_ROWS, > 1 runs in 3-5 seconds > Emmanuel> and 2 in 4-5 seconds, thus totalling 7-10 seconds. > > The reason the COUNT(*) is faster is that in the case of > SQL_CALC_FOUND_ROWS MySQL needs to do sort and retrieve all matching > rows, while COUNT(*) can skip the sorting phase. Makes sense. Slowly but sure I'm beginning to see the bigger picture. > This is one of the boarder cases where SQL_CALC_FOUND_ROWS can be > slower than using 2 queries. > > Note however that if there would have been less matching rows (for > example 60), the SQL_CALC_FOUND_ROWS method is much faster... Seeing as the sort would only be of 60 records. > <cut> > > >> By the way, why do you need to know the number of rows ? > >> > >> If this is for a web form where you want to show X rows, a better way > >> to do this is to retrieve X+1 rows and then, after displaying X rows > >> say (if you get X+1 rows) that there is more matching rows in the > >> result. > > Emmanuel> On an administration web page I show total number of > members and then the > Emmanuel> most recent joinees. > > The question here is how important it is for anyone to know the total > number of members. Not critical. So on two queries where I use this, I now know why they are slightly slower than expected. That is if I continue to do total number of members. > In many cases it's enough to show X members and then have a link 'show > the next X members', that is only shown if there is more than X > members. The speedup you get for doing this is in many case worth the > small inconvenience for your users.. Point taken and a neat way to overcome the delay for getting the total count. BTW, in this case I do not show all the detail, only the most recent members that joined. Kind regards Emmanuel > Regards, > Monty --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php