Please help me, how to speed up this sql query?
SELECT pa.*
FROM ParametrickeVyhladavanie pa,
(SELECT p.*
FROM produkty p
WHERE p.KATEGORIA IN ('$categoryArray')) produkt
WHERE produkt.ATTRIBUTE_CODE LIKE CONCAT('%', pa.code, '%')
AND produkt.ATTRIBUTE_VALUE LIKE CONCAT('%', pa.ValueCode, '%')
GROUP BY pa.code
Indexes: pa.code, pa.ValueCode, p.ATTRIBUTE_CODE, p.ATTRIBUTE_VALUE
Showing rows 0 - 25 ( 26 total, Query took 20.4995 sec)
EDIT Actual code:
SELECT pa.*
FROM ParametrickeVyhladavanie pa
WHERE EXISTS
(
SELECT 1 FROM produkty p
JOIN
PRODUCT_INFO AS pi
ON p.ProId = pi.ProduktID
AND p.KATEGORIA IN ('Mobily'))
AND pi.ATTRIBUTE_CODE = pa.AttributeCode
AND pi.ATTRIBUTE_VALUE = pa.ValueCode
GROUP BY pa.code
This code says error #1054 - Unknown column 'pi.ATTRIBUTE_CODE' in 'where clause'
The pi.
table working only between (
and )
EDIT - THIS IS ANSWER
I changed MySQL 5.1 to MariaDB 5.5 and its faster!!!
The following recommendations will help you in your SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `ParametrickeVyhladavanie` ADD INDEX `parametrickevyhlad_idx_code` (`code`);
ALTER TABLE `produkty` ADD INDEX `produkty_idx_kategoria` (`KATEGORIA`);
SELECT
pa.*
FROM
ParametrickeVyhladavanie pa,
(SELECT
p.*
FROM
produkty p
WHERE
p.KATEGORIA IN (
'$categoryArray'
)) produkt
WHERE
produkt.ATTRIBUTE_CODE LIKE CONCAT('%', pa.code, '%')
AND produkt.ATTRIBUTE_VALUE LIKE CONCAT('%', pa.ValueCode, '%')
GROUP BY
pa.code
ORDER BY
NULL