Всем доброго времени суток.
Есть запрос:
$SECTION_SQL=$dbTecDoc->query('SELECT DISTINCT
ART_ID, ART_ARTICLE_NR, SUP_BRAND, DES_TEXTS.TEX_TEXT AS STR_DES_TEXT, DES_TEXTS2.TEX_TEXT AS ART_COMPLETE_DES_TEXT
FROM LINK_GA_STR
INNER JOIN LINK_LA_TYP ON LAT_TYP_ID IN ('.implode(',',$TYP_ID_array).') AND
LAT_GA_ID = LGS_GA_ID
INNER JOIN LINK_ART ON LA_ID = LAT_LA_ID
INNER JOIN SEARCH_TREE ON STR_ID = LGS_STR_ID
INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = STR_DES_ID AND DESIGNATIONS.DES_LNG_ID = '.$LNG_ID.'
INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
INNER JOIN ARTICLES ON ART_ID = LA_ART_ID
INNER JOIN SUPPLIERS ON SUP_ID = ART_SUP_ID
INNER JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ART_COMPLETE_DES_ID
INNER JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID AND DESIGNATIONS2.DES_LNG_ID = '.$LNG_ID.'
WHERE
LGS_STR_ID = '.$SECTION_ID.'
ORDER BY
LA_ART_ID
LIMIT '.$LIMIT);
Который вытаскивает из базы все ART_ARTICLE_NR для $TYP_ID_array из категории SECTION_ID, артикулов очень много для родительской категории, порядка 2000. Дальше формируется массив который идет по базе с запчастями, в которой больше миллиона записей и все так же вытаскивает совпадения и третий запрос это
function GetPropertys($ART_ID, $LNG_ID){
global $dbTecDoc;
$model_par = '';
$param_SQL=$dbTecDoc->query("SELECT DES_TEXTS.TEX_TEXT AS CRITERIA_DES_TEXT,
IFNULL(DES_TEXTS2.TEX_TEXT, ACR_VALUE) AS CRITERIA_VALUE_TEXT
FROM ARTICLE_CRITERIA
LEFT JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ACR_KV_DES_ID
LEFT JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID
LEFT JOIN CRITERIA ON CRI_ID = ACR_CRI_ID
LEFT JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = CRI_DES_ID
LEFT JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
WHERE ACR_ART_ID = ".$ART_ID." AND
(DESIGNATIONS.DES_LNG_ID IS NULL OR DESIGNATIONS.DES_LNG_ID = ".$LNG_ID.") AND
(DESIGNATIONS2.DES_LNG_ID IS NULL OR DESIGNATIONS2.DES_LNG_ID = ".$LNG_ID.");");
while ( $model_param = $dbTecDoc->get_row($param_SQL) ) {
//$model_par .= $model_param['CRITERIA_DES_TEXT'] . ': ' . $model_param['CRITERIA_VALUE_TEXT'] . ';<br />';
$model_par .= '<tr><td>' . $model_param['CRITERIA_DES_TEXT'] . '</td><td>' . $model_param['CRITERIA_VALUE_TEXT'] . '</td></tr>';
}
return '<table class="table table-striped table-hover"><tbody>' . $model_par . '</tbody></table>';
}
который уже вытаскивает параметры для товара.
Первый запрос из базы TecDoc отрабатывает около 7-15 секунд, второй не меньше и третий уже в сравнении с остальными гораздо меньше, но все равно эти цифры приводят в ужас. Учитывая что перед ними ещё есть запрос который формирует TYP_ID_array.
Собственно нужна помощь в оптимизации работы всех этих запросов. Скорее всего я изначально не правильно подхожу к структуре и однозначно говнокодю, потому что я знаю у кого это реализовано и работает это быстро у них.
Готов отблагодарить финансово за консультации.