List:General Discussion« Previous MessageNext Message »
From:rafarife Date:February 26 2003 6:30pm
Subject:optimizer bug in the index used by mysql/Innodb in the search
View as plain text  
 Description:
     Hello,

     I am working with mysql/InnoDb 4.0.11 under Windows 2000.

     I have the following table:    

   CREATE TABLE `giros` (
    `Doc` varchar(10) NOT NULL default '',
    `Tipo` char(1) NOT NULL default '',
    `NRe` varchar(5) NOT NULL default '',
    `FoP` char(2) NOT NULL default '',
    `FeL` date default NULL,
    `FeV` date default NULL,
    `NRm` varchar(6) NOT NULL default '',
    `Pis` char(2) NOT NULL default '',
    `Imp` decimal(20,4) NOT NULL default '0.0000',
    `Cod` varchar(6) NOT NULL default '',
    `Nom` varchar(40) NOT NULL default '',
    `Dir` varchar(35) NOT NULL default '',
    `Cop` varchar(6) NOT NULL default '',
    `Pob` varchar(30) NOT NULL default '',
    `Pro` varchar(25) NOT NULL default '',
    `BCd` varchar(8) NOT NULL default '',
    `BNm` varchar(40) NOT NULL default '',
    `BDr` varchar(35) NOT NULL default '',
    `BPb` varchar(30) NOT NULL default '',
    `BPr` varchar(25) NOT NULL default '',
    `Cba` varchar(10) NOT NULL default '',
    `Dct` char(2) NOT NULL default '',
    `NLe` text,
    `Cob` tinyint(4) unsigned NOT NULL default '0',
    `Ctb` tinyint(4) unsigned NOT NULL default '0',
    `BCp` varchar(6) NOT NULL default '',
    `Impreso` tinyint(4) unsigned NOT NULL default '0',
    `Est` varchar(20) NOT NULL default '',
    `Linea` int(11) NOT NULL default '0',
     PRIMARY KEY  (`Tipo`,`Doc`,`NRe`),
     KEY `NRmLinea` (`NRm`,`Linea`),
     KEY `TipoFeVCod` (`Tipo`,`FeV`,`Cod`),
     KEY `CodTipoDocFeV` (`Cod`,`Tipo`,`Doc`,`FeV`)
) TYPE=InnoDB;

   I ran the following query:

   SELECT TIPO,DOC,NRE
   FROM GIROS   
   WHERE (GIROS.TIPO='R' AND GIROS.DOC='ZA03003996' AND GIROS.NRE<'01/01') 
   OR (GIROS.TIPO='R' AND GIROS.DOC<'ZA03003996') OR GIROS.TIPO<'R' 
   ORDER BY GIROS.TIPO DESC, GIROS.DOC DESC,GIROS.NRE DESC LIMIT 1

   Time: 0.20 secs.
   Explain:         
   table   type  possible_keys       key        key_len  ref   rows  Extra
   GIROS   range PRIMARY,TipoFeVCod  TipoFeVCod    1     NULL  9417  Using where; Using
index; Using filesort

   I changed the table type to MyIsam (alter table giros type=MyIsam),
   and I ran the above query:

   Time:0.02 secs       
   Explain:
   table   type  possible_keys       key        key_len  ref   rows   Extra
   GIROS   range PRIMARY,TipoFeVCod  PRIMARY       16    NULL 19472   Using where; Using
index


   So, MySQL/MyIsam uses the right index (the primary index) while MySQL/InnoDB uses
   a wrong index (TipoFeVCod).
   
   Thanks in advance,
   Rafa

How-To-Repeat:
   Select ... from giros ...

Fix:
    -

Synopsis:optimizer bug in the index used by mysql/Innodb in the search

Submitter-Id:   <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.11 Gamma(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/
Thread
optimizer bug in the index used by mysql/Innodb in the searchrafarife26 Feb