re: Indices in querys using OR...

2003-03-18 Thread Egor Egorov
On Tuesday 18 March 2003 02:47, dreq jkj wrote:

 I have trouble figuring out how the indices are used when making a query
 that uses OR-operator.

 If I have the following table:

 create table testing(
 id int unsigned not null primary key auto_increment,
 idx1 int unsigned not null,
 idx2 int unsigned not null,
 index(idx1),
 index(idx2));

 In this query i expect mySQL to use one of the two indices to speed up the
 query, but It doesn't.. :(
 select * from testing where idx1=0 or idx2=1;

Yes, MySQL doesn't use indexes in this way:
http://www.mysql.com/doc/en/Searching_on_two_keys.html

 The thing I'm thinking about instead is the following query:
 select * from testing where idx1=0
 UNION
 select * from testing where idx2=1;

 It looks like this does speed up the query, but is this the way to go???
 Is this a weaknes in mySQL or have I forgotten something?





-- 
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.net http://www.ensita.net/
   __  ___ ___   __
  /  |/  /_ __/ __/ __ \/ /Egor Egorov
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.net
   ___/   www.mysql.com




-
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



Indices in querys using OR...

2003-03-17 Thread dreq jkj
I have trouble figuring out how the indices are used when making a query 
that uses OR-operator.

If I have the following table:

create table testing(
id int unsigned not null primary key auto_increment,
idx1 int unsigned not null,
idx2 int unsigned not null,
index(idx1),
index(idx2));
In this query i expect mySQL to use one of the two indices to speed up the 
query, but It doesn't.. :(
select * from testing where idx1=0 or idx2=1;

The thing I'm thinking about instead is the following query:
select * from testing where idx1=0
UNION
select * from testing where idx2=1;
It looks like this does speed up the query, but is this the way to go???
Is this a weaknes in mySQL or have I forgotten something?
_
Hitta rätt på nätet med MSN Sök http://search.msn.se/
-
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