1
我有一些像這樣的查詢...這得到我的服務器的上市優化與左MySQL查詢聯接和子查詢
SELECT colA, colB, colC, colD FROM table1
LEFT JOIN (
SELECT colD FROM table2 WHERE colE = 3225
) AS subquery
ON colD = colA ;
「查詢 - 不使用日誌「指數」日誌。
的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可樂,COLB,COLC,冷FROM表1 LEFT JOIN( SELECT DISTINCT冷遇表2 WHERE colF = 'SomeText' )AS子查詢 ON colD = colA;' 謝謝 –
我已經根據您以前的指導回答了我自己的問題 - 它的'SELECT DISTINCT colA,colB,colC,colD FROM table1 LEFT JOIN table2 ON colF ='SomeText'AND colD = colA' - 再次感謝 –