我不是 MySQL 高手,但我明白了,我刚刚继承了一个非常大的表(600,000 行和大约 90 列(请杀了我......))并且我创建了一个较小的表来链接它一个类别表。
我正在尝试使用左连接查询所述表,因此我将两组数据都放在一个对象中,但运行速度非常慢,而且我还不够热,无法对其进行排序;对于它为什么这么慢,我真的很感激一些指导和解释。
SELECT
`products`.`Product_number`,
`products`.`Price`,
`products`.`Previous_Price_1`,
`products`.`Previous_Price_2`,
`products`.`Product_number`,
`products`.`AverageOverallRating`,
`products`.`Name`,
`products`.`Brand_description`
FROM `product_categories`
LEFT OUTER JOIN `products`
ON `products`.`product_id`= `product_categories`.`product_id`
WHERE COALESCE(product_categories.cat4, product_categories.cat3,
product_categories.cat2, product_categories.cat1) = '123456'
AND `product_categories`.`product_id` != 0
这两个表是 MyISAM,products 表在 Product_number 和 Brand_Description 上有索引,product_categories 表在所有组合列上都有唯一索引;如果此信息有任何帮助。
继承了这个系统后,我需要尽快让这个系统正常工作,然后才能正确地操作它,所以现在的任何帮助都会为您赢得我最大的尊重!
[编辑] 这是解释扩展的输出:
+----+-------------+--------------------+-------+---------------+------+---------+------+---------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------------------+-------+---------------+------+---------+------+---------+----------+--------------------------+
| 1 | SIMPLE | product_categories | index | NULL | cat1 | 23 | NULL | 1224419 | 100.00 | Using where; Using index |
| 1 | SIMPLE | products | ALL | Product_id | NULL | NULL | NULL | 512376 | 100.00 | |
+----+-------------+--------------------+-------+---------------+------+---------+------+---------+----------+--------------------------+