【发布时间】:2017-06-15 08:05:21
【问题描述】:
我在使用 JOIN 和 MAX/MIN 进行查询时遇到问题。例如:
SELECT Min(a.date), Max(a.date)
FROM a
INNER JOIN b ON b.ID = a.ID AND b.cID = 5
是否可以添加索引或更改此查询结果更好? 下面是解释的结果
+----+-------------+----------+------+-----------------+-----+---------+-----------+--------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+-----------------+-----+---------+-----------+--------+-----------------------+
| 1 | SIMPLE | b | ref | PRIMARY,cID | cID | 5 | const | 680648 | Using index |
| 1 | SIMPLE | a | ref | ID | ID | 5 | base.b.ID | 1 | Using index condition |
+----+-------------+----------+------+-----------------+-----+---------+-----------+--------+-----------------------+
抱歉,我不会把整张桌子都放在这里,这样会造成很多混乱。
CREATE TABLE `a` (
`ID` int(11) NOT NULL,
`date` datetime DEFAULT,
PRIMARY KEY (`ID`),
KEY `date` (`date`),
)
CREATE TABLE `b` (
`bID` int(11) NOT NULL,
`ID` int(11) NOT NULL,
`cID` int(11) DEFAULT,
PRIMARY KEY (`bID`),
KEY `cID` (`cID`),
)
【问题讨论】:
-
请尝试解释
result was better。你的意思是获得更多的领域,更快,...? -
同时为所有相关表提供 SHOW CREATE TABLE 语句
-
是的,我的意思是执行时间查询。我知道如何在单个查询中使用索引来加速结果 MAX 和 MIN,但我正在寻找 JOIN 版本的解决方案。
标签: mysql join indexing max min