In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `artists` ADD INDEX `artists_idx_id` (`id`);
ALTER TABLE `artists_products` ADD INDEX `artists_products_idx_product_id` (`product_id`);
ALTER TABLE `categories` ADD INDEX `categories_idx_id` (`id`);
ALTER TABLE `categories_products` ADD INDEX `categories_product_idx_product_id` (`product_id`);
ALTER TABLE `colors` ADD INDEX `colors_idx_id` (`id`);
ALTER TABLE `colors_family` ADD INDEX `colors_family_idx_id` (`id`);
ALTER TABLE `colors_products` ADD INDEX `colors_products_idx_colors_id` (`colors_id`);
ALTER TABLE `colors_products` ADD INDEX `colors_products_idx_product_id` (`product_id`);
ALTER TABLE `keywords` ADD INDEX `keywords_idx_id` (`id`);
ALTER TABLE `products` ADD INDEX `products_idx_active` (`active`);
ALTER TABLE `products_keywords` ADD INDEX `products_keywords_idx_product_id` (`product_id`);
SELECT
p_slug,
p_image_code,
`products_name`,
`authors_name`,
`category_name`,
`color_family_name`
FROM
((SELECT
DISTINCT p_slug AS p_slug,
p_image_code AS p_image_code,
`products_name` AS `products_name`,
`a`.`name` AS `authors_name`,
`c`.`name` AS `category_name`,
`cf`.`name` AS `color_family_name`
FROM
(SELECT
`p`.`slug` AS p_slug,
`p`.`image_code` AS p_image_code,
`p`.`name` AS `products_name`,
`p`.`id` AS p_id
FROM
`products` AS `p`
WHERE
`p`.`active` = 1 LIMIT 60) AS `p`
INNER JOIN
`categories_products` AS `cp`
ON (
`p`.p_id = `cp`.`product_id`
)
INNER JOIN
`categories` AS `c`
ON (
`cp`.`categories_id` = `c`.`id`
)
INNER JOIN
`artists_products` AS `ap`
ON (
`p`.p_id = `ap`.`product_id`
)
INNER JOIN
`artists` AS `a`
ON (
`ap`.`artists_id` = `a`.`id`
)
INNER JOIN
`products_keywords` AS `pk`
ON (
`p`.p_id = `pk`.`product_id`
)
INNER JOIN
`keywords` AS `kw`
ON (
`pk`.`keyword_id` = `kw`.`id`
)
INNER JOIN
`colors_products` AS `cop`
ON (
`p`.p_id = `cop`.`product_id`
)
INNER JOIN
`colors` AS `col`
ON (
`cop`.`colors_id` = `col`.`id`
)
INNER JOIN
`colors_family` AS `cf`
ON (
`col`.`color_family_id` = `cf`.`id`
)
WHERE
`col`.`pantone_code` LIKE '%red%'
AND 1 = 1 LIMIT 60
)
UNION
DISTINCT (SELECT
DISTINCT `p`.`slug` AS p_slug,
`p`.`image_code` AS p_image_code,
`p`.`name` AS `products_name`,
`a`.`name` AS `authors_name`,
`c`.`name` AS `category_name`,
`cf`.`name` AS `color_family_name`
FROM
`products` AS `p`
INNER JOIN
`categories_products` AS `cp`
ON (`p`.`id` = `cp`.`product_id`)
INNER JOIN
`categories` AS `c`
ON (`cp`.`categories_id` = `c`.`id`)
INNER JOIN
`artists_products` AS `ap`
ON (`p`.`id` = `ap`.`product_id`)
INNER JOIN
`artists` AS `a`
ON (`ap`.`artists_id` = `a`.`id`)
INNER JOIN
`products_keywords` AS `pk`
ON (`p`.`id` = `pk`.`product_id`)
INNER JOIN
`keywords` AS `kw`
ON (`pk`.`keyword_id` = `kw`.`id`)
INNER JOIN
`colors_products` AS `cop`
ON (`p`.`id` = `cop`.`product_id`)
INNER JOIN
`colors` AS `col`
ON (`cop`.`colors_id` = `col`.`id`)
INNER JOIN
`colors_family` AS `cf`
ON (`col`.`color_family_id` = `cf`.`id`)
WHERE
`p`.`image_code` LIKE '%red%'
OR `p`.`slug` LIKE '%red%'
OR `p`.`name` LIKE '%red%'
OR `a`.`name` LIKE '%red%'
OR `c`.`name` LIKE '%red%'
OR `kw`.`name` LIKE '%red%'
OR `col`.`name` LIKE '%red%'
OR `cf`.`name` LIKE '%red%' LIMIT 60)
) AS union1 LIMIT 60