0
當我添加從JOINED表派生的ORDER BY時,執行查詢的時間從0.008秒增加到0.50秒,儘管在order by字段中有一個索引。以下是查詢:Order By on Join需要年齡
SELECT a.productid
FROM products a
JOIN products_lng b FORCE INDEX (primary)
ON a.productid = b.productid
AND b.code = 'US'
JOIN pricing c
ON c.productid = a.productid
JOIN thumbnails d
ON d.productid = a.productid
JOIN bigthumbnails e
ON e.productid = a.productid
JOIN products_categories f
ON f.productid = a.productid
WHERE a.forsale = 'Y'
GROUP BY b.productid
ORDER BY b.product
解釋計劃:
B具有以下指標:
CREATE TABLE `products_lng` (
`code` varchar(2) CHARACTER SET latin1 NOT NULL DEFAULT '',
`productid` int(11) NOT NULL DEFAULT '0',
`product` varchar(255) CHARACTER SET latin1 NOT NULL DEFAULT '',
`descr` varchar(512) CHARACTER SET latin1 NOT NULL,
`full_descr` varchar(1024) CHARACTER SET latin1 NOT NULL,
`processed` varchar(1) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`code`,`productid`,`product`),
KEY `ad` (`code`,`productid`,`product`,`descr`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
這是因爲MySQL已經使用了主鍵,它不會使用其他索引進行排序。 –
當我在「PRIMARY」索引中添加字段「product」時,它只需要更多時間 – bicycle
實際上,爲什麼使用表「a」?你不需要它。 –