使用JOIN进行缓慢的SELECT优化

我的数据库由以下表格组成:商品,价格,供应商,制造商和其他。

CREATE TABLE `articles` (
  `id` int(3) NOT NULL,`name` varchar(255) COLLATE utf8_bin NOT NULL,`manufacturer_id` int(3) NOT NULL,`brand_id` int(3) NOT NULL,`category_id` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `prices` (
  `id` int(3) NOT NULL,`article_id` int(3) NOT NULL,`price` varchar(50) COLLATE utf8_bin NOT NULL,`supplier_id` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `suppliers` (
  `id` int(11) NOT NULL,`name` varchar(200) COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `manufacturers` (
  `id` int(5) NOT NULL,`name` varchar(255) COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

通过此查询,我输出所有文章并将它们加入其他表。为了根据供应商过滤商品和价格,我将“价格”表加入该查询。

SELECT DISTINCT articles.id,manufacturers.name manufacturer_name,FROM articles
           LEFT 
           JOIN manufacturers
             ON articles.manufacturer_id = manufacturers.id
           LEFT 
           JOIN prices
             ON articles.id = prices.article_id

此查询的工作非常缓慢(大约6秒钟)。

当我用INNER JOIN替换LEFT JOIN时,输出工作非常快,但没有价格的项目就不会输出。

INNER JOIN prices
    ON articles.id = prices.article_id

我该如何优化查询:具有正确加入价格并快速输出价格的商品?

gordon000 回答:使用JOIN进行缓慢的SELECT优化

您需要做的第一件事是添加索引以提高MySql性能。

Mysql performance indexes explain

本文链接:https://www.f2er.com/3082046.html

大家都在问