optimizer bug in selecting fields that don´t belong to the index used by mysql/innodb
am 13.09.2002 18:56:31 von rafarifeDescription:
Heikki,
I am sorry because I have made a mistake. I have not two keys with
the same name.
The Clientes table is as follow:
CREATE TABLE clientes (
Cod varchar(6) NOT NULL default '',
Nom varchar(40) NOT NULL default '',
Nif varchar(10) NOT NULL default '',
Nombre_comercial varchar(40) NOT NULL default '',
...
...
...
PRIMARY KEY (Cod),
UNIQUE KEY Nombre (Nom,Cod)
UNIQUE KEY NombreComercial (Nombre_comercial,Cod) !!!!
...
...
) TYPE=InnoDB;
Mysql uses the index: Nombre
And now, the explain selects:
1) Slow query
explain Select Cod,Nom,Nif,Nombre_comercial from Clientes
Where (Nom = 'GARCIA MANCILLA,S.L' And Cod>'061642')
Or Nom>'GARCIA MANCILLA,S.L' Order by Nom ASC, Cod ASC Limit 50;
table type possible keys key key_len ref rows Extra
----- ---- ------------- --- ------- --- ---- -----
Clientes index PRIMARY,Nombre Nombre 46 4039 where used
2) Fast queries.
Temporary table.
CREATE TEMPORARY TABLE TEMPORAL type=heap Select Cod,Nom From Clientes
Where (Nom = 'GARCIA MANCILLA,S.L' And Cod>'061642') Or Nom>'GARCIA MANCILLA,S.L' Order by Nom ASC, Cod ASC Limit 50;
explain Select Cod,Nom From Clientes Where (Nom = 'GARCIA MANCILLA,S.L' And Cod>'061642')
Or Nom>'GARCIA MANCILLA,S.L' Order by Nom ASC, Cod ASC Limit 50;
table type possible keys key key_len ref rows Extra
----- ---- ------------- --- ------- --- ---- -----
Clientes range PRIMARY,Nombre Nombre 46 4411 where used;using index
explain SELECT TEMPORAL.COD,TEMPORAL.NOM,NIF,NOMBRE_COMERCIAL
FROM TEMPORAL INNER JOIN CLIENTES ON TEMPORAL.COD=CLIENTES.COD;
table type possible keys key key_len ref rows Extra
----- ---- ------------- --- ------- --- ---- -----
Temporal all 50
Clientes eq_ref PRIMARY PRIMARY 6 Temporal.cod 1
thanks in advance,
Rafa.
How-To-Repeat:
Select Cod,Nom,Nif,Nombre_comercial from Clientes Where (Nom = 'GARCIA MANCILLA,S.L' And Cod>'061642')
Or Nom>'GARCIA MANCILLA,S.L' Order by Nom ASC, Cod ASC Limit 50;
Fix:
-
Synopsis: Subject: optimizer bug in selecting fields that don´t belong to the index used by mysql/innodb
Submitter-Id:
Originator: Rafa
Organization: Pecomark
MySQL support: none
Severity: non-critical
Priority: medium
Category: mysqld-max-nt
Class: sw-bug
Release: mysqld 4.0.3 beta(InnoDB)
Exectutable: mysqld-max-nt
Environment: Pentium III-MMX, 500 MHZ, 540 MB
System: Windows 2000
Compiler: -
Architecture: i
____________________________________________________________ ______
The NEW Netscape 7.0 browser is now available. Upgrade now! http://channels.netscape.com/ns/browsers/download.jsp
Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.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
To unsubscribe, e-mail
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php