gpt4 book ai didi

mysql - 使用 Left Join 和子查询优化 MySQL 查询

转载 作者:行者123 更新时间:2023-11-30 23:26:45 25 4
gpt4 key购买 nike

我有很多这样的查询...

SELECT colA, colB, colC, colD FROM table1 
LEFT JOIN (
SELECT colD FROM table2 WHERE colE = 3225
) AS subquery
ON colD = colA ;

哪些列在我服务器的“log-queries-not-using-indexes”日志中。

EXPLAIN 看起来像这样......

id | select_type | table      | type  | possible_keys | key     | key_len | ref  | rows | Extra
---+-------------+------------+-------+---------------+---------+---------+------+------+-------------
1 | PRIMARY | table1 | range | PRIMARY | PRIMARY | 3 | NULL | 58 | Using where
1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 1 |
2 | DERIVED | table2 | const | PRIMARY | PRIMARY | 3 | | 1 |

有什么方法可以重构查询,或者我应该添加任何新索引来改进它吗?

仅供引用,表格的结构如下...

CREATE TABLE `table1` (
`colA` MEDIUMINT( 9 ) NOT NULL ,
`colB` VARCHAR( 100 ) DEFAULT NULL ,
`colC` VARCHAR( 6 ) DEFAULT NULL ,
some more columns removed to simplify things...
PRIMARY KEY ( `colA` ) ,
KEY `colB` ( `colB` ) ,
KEY `colC` ( `colC` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 ;


CREATE TABLE `table2` (
`colE` mediumint( 9 ) NOT NULL auto_increment ,
`colD` mediumint( 9 ) default '0',
some more columns removed to simplify things...
PRIMARY KEY ( `colE` ) ,
KEY `colD` ( `colD` )
) ENGINE = MyISAM DEFAULT CHARSET = latin1 ;

提前致谢

你的

菲尔

最佳答案

我会尝试以下方法:

SELECT ColA, ColB, ColC, ColD
FROM
table1
LEFT JOIN table2
ON ColE = 3225
AND ColD = ColA

此外,尝试在 table2 上创建一个涵盖 ColEColD 的索引:

CREATE INDEX `IDX_table2` on `table2` (`colE` ASC, `colD` ASC);

关于mysql - 使用 Left Join 和子查询优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12919423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com