You could just use the benchmark function?
select BENCHMARK(10000000, 'dfsfsdfs' like 'F%' ) /* 0.45 sec. */
select BENCHMARK(10000000, 'dfsfsdfs' between 'F' and 'Fzzz' ) /* 0.55
sec. */
select BENCHMARK(10000000, left('dfsfsdfs',1)='F' ) /* 0.79 sec. */
The times go up a little if the strings are a match.
Ed
-----Original Message-----
From: Roger Baklund [mailto:[EMAIL PROTECTED]
Sent: Wednesday, January 21, 2004 1:11 PM
To: [EMAIL PROTECTED]
Cc: Hassan Shaikh
Subject: Re: Efficient SQL Statement
* Hassan Shaikh
> Which one of the following statements is more efficient?
>
> SELECT * FROM COUNTRY WHERE LEFT(CNNAME,1)='B';
>
> Or
>
> SELECT * FROM COUNTRY WHERE CNNAME LIKE 'B%';
The second statement will normally be the most effective, because the
server
don't need to perform a function on the column for each row. However,
the
LIKE operator is relatively "heavy", the _most_ effective in this case
is
probably:
SELECT * FROM COUNTRY WHERE CNNAME>='B' AND CNNAME<'C'
or
SELECT * FROM COUNTRY WHERE CNNAME BETWEEN 'B' AND 'Bzzz'
--
Roger
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]