Re: [PHP-DB] Re: SQL WHERE datetime NOW

2004-01-06 Thread Richard Davey
Hello John,

Tuesday, January 6, 2004, 5:20:22 PM, you wrote:

J On further reading, it appears LIMIT stops the query running once x number
J of records are retrieved without sorting the whole table first.

Where did you read this?

If you profile your query you'll notice that in say a 10,000 record
table, if you LIMIT 0,50 but order by something generic (say an ID or
date stamp) it'll still order all 10,000 records before returning the
50 you asked for.

(One of the main reasons I rarely use LIMIT)

J Is there a function to get the top x number of results, as there is in MS
J Access? Eg search on an auto-increment and get the last 10 records added?

LIMIT 50,-1

Retrieve from row 50 to last.

-- 
Best regards,
 Richardmailto:[EMAIL PROTECTED]

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] Re: SQL WHERE datetime NOW

2004-01-06 Thread John
Richard Davey [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 Hello John,

 Tuesday, January 6, 2004, 5:20:22 PM, you wrote:

 J On further reading, it appears LIMIT stops the query running once x
number
 J of records are retrieved without sorting the whole table first.

 Where did you read this?

http://www.mysql.com/doc/en/LIMIT_optimisation.html
If you use LIMIT row_count with ORDER BY, MySQL will end the sorting as soon
as it has found the first row_count lines instead of sorting the whole
table.


 If you profile your query you'll notice that in say a 10,000 record
 table, if you LIMIT 0,50 but order by something generic (say an ID or
 date stamp) it'll still order all 10,000 records before returning the
 50 you asked for.


Does it?

 (One of the main reasons I rarely use LIMIT)

 J Is there a function to get the top x number of results, as there is in
MS
 J Access? Eg search on an auto-increment and get the last 10 records
added?

 LIMIT 50,-1

 Retrieve from row 50 to last.

I meant to largest 10 values in a column.  For example, I have a record with
ID number 1800 in an auto increment field, table has 1805 records.  When I
view the table 'raw' record 1800 appears after record 12.  I wanted records
1755-1805.  Instead now I've retrieved the whole table with ORDER BY without
LIMIT and put my start and end values in the for () loop.  Now, my eyes may
have deceived me...

Cheers,

John

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php