| Bug #10989 | The subquery doesnt use the index type range | ||
|---|---|---|---|
| Submitted: | 31 May 2005 15:28 | Modified: | 6 Jul 2005 11:55 |
| Reporter: | Mark Nozz | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S4 (Feature request) |
| Version: | 4.1.11, 6.0.7 | OS: | Linux (Linux) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | performance, subquery | ||
[31 May 2005 15:28]
Mark Nozz
[6 Jul 2005 11:55]
Geert Vanderkelen
Hi, There is still work being done optimizing subqueries. This is planned for later. I put this bug report on 'To be fixed later'. Thanks for the report! Best regards, Geert
[2 Nov 2008 18:58]
Valeriy Kravchuk
Still not fixed even in 6.0.7:
C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -P3311 -uroot -proot test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 6.0.7-alpha-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE `matches` (
-> `ID` int(11) NOT NULL auto_increment,
-> `Home` int(11) NOT NULL,
-> `Away` int(11) NOT NULL,
-> PRIMARY KEY (`ID`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.27 sec)
mysql>
mysql> CREATE TABLE `players` (
-> `ID` int(11) NOT NULL auto_increment,
-> `Team` int(11) NOT NULL,
-> `Deleted` int(11) NOT NULL,
-> PRIMARY KEY (`ID`),
-> KEY `Team` (`Team`,`Deleted`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.08 sec)
mysql>
mysql> INSERT INTO `matches`(ID, Home, Away) VALUES (NULL, 1, 2);
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO `players`(ID, Team) VALUES
-> (NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),
-> (NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),
-> (NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3);
ERROR 1364 (HY000): Field 'Deleted' doesn't have a default value
mysql> alter table players modify `Deleted` int(11) NOT NULL DEFAULT 0;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> INSERT INTO `players`(ID, Team) VALUES
-> (NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),(NULL, 1),
-> (NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),(NULL, 2),
-> (NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3),(NULL, 3);
Query OK, 21 rows affected (0.08 sec)
Records: 21 Duplicates: 0 Warnings: 0
mysql> explain SELECT ID, (SELECT GROUP_CONCAT(PL.ID) FROM players PL WHERE PL.T
eam IN (M.Home, M.Away)
-> GROUP BY PL.Deleted) FROM matches M WHERE ID = 1\G
*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: M
type: system
possible_keys: PRIMARY
key: NULL
key_len: NULL
ref: NULL
rows: 1
Extra:
*************************** 2. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: PL
type: ALL
possible_keys: Team
key: NULL
key_len: NULL
ref: NULL
rows: 21
Extra: Using where; Using filesort
2 rows in set (0.22 sec)
