Hello all,

Default optimizer behavior has changed in 4.0.16 (since 4.0.14)
for this simple question:

select state_id, orderdata_id from order_delivery where
orderdata_id in
(3193340,3193343,3193346,3193349,3193352,3193355)
and is_deleted=0 order by xtime desc

CREATE TABLE `order_delivery` (
  `orderdata_id` int(11) NOT NULL default '0',
  `state_id` int(11) NOT NULL default '0',
  `xtime` datetime NOT NULL default '0000-00-00 00:00:00',
  `admin_user_id` int(11) NOT NULL default '0',
  `note` text NOT NULL,
  `is_deleted` int(1) NOT NULL default '0',
  KEY `orderdata_id` (`orderdata_id`),
  KEY `is_deleted` (`is_deleted`),
  KEY `xtime` (`xtime`)
) TYPE=InnoDB |

4.0.14
=======
mysql> EXPLAIN select state_id, orderdata_id from order_delivery where
    -> orderdata_id in
    -> (3193340,3193343,3193346,3193349,3193352,3193355)
    -> and is_deleted=0 order by xtime desc;
+----------------+-------+-------------------------+--------------+---------+------+------+-----------------------------+
| table          | type  | possible_keys           | key          | key_len | ref  | 
rows | Extra                       |
+----------------+-------+-------------------------+--------------+---------+------+------+-----------------------------+
| order_delivery | range | orderdata_id,is_deleted | orderdata_id |       4 | NULL |   
 5 | Using where; Using filesort |
+----------------+-------+-------------------------+--------------+---------+------+------+-----------------------------+
1 row in set (0.25 sec

4.0.16
=======
+----------------+------+-------------------------+------------+---------+-------+--------+-----------------------------+
| table          | type | possible_keys           | key        | key_len | ref   | 
rows   | Extra                       |
+----------------+------+-------------------------+------------+---------+-------+--------+-----------------------------+
| order_delivery | ref  | orderdata_id,is_deleted | is_deleted |       4 | const | 
228021 | Using where; Using filesort |
+----------------+------+-------------------------+------------+---------+-------+--------+-----------------------------+
1 row in set (0.15 sec)

Due to this simple queries with  WHERE IN() became aprox. 30 time slower in my case.
MyISAM in not affected.
Have anyone ever seen such problems with InnoDB tables in 4.0.16?

-- 
                   Best regards,
                   Sergey S. Kostyliov <[EMAIL PROTECTED]>
                   Public PGP key: http://sysadminday.org.ru/rathamahata.asc


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to