Как бы да, но тут тебе придется заменять внутренности самого движка. Пользовался б автор Magento - просто купил бы какой-то экстеншн, в котором это реализовано да и все). В Mage искаропки есть преобразование EAV во flat table. При этом flat table может быть заменена на sphinxsearch/elasticsearch/etc при помощи сторонних расширений
@Абырвалг, тогда бы у ТС возникла другая проблема, топик назывался бы не "Оптимизация SQL", а "Где купить подешевле мощный сервер для Magento". Или мажента уже не та что прежде?
https://smappi.org/ - платформа по созданию API на все случаи жизни
А объясните мне тёмному, чем сфинкс-сёрч поможет если надо вывести карточку товара (и на это сейчас тратится 100+ запросов), а? Или вопроса никто не читал?
SS Premium вообще писали какие-то непонятные руки, как можно было сделать при загрузке карточки товара вызов в базу главной страницы и раздела каталога где расположен товар, отсюда и больше 100 запросов....
Сколько много нового можно узнать добавив в логи запросы.
Есть у меня ещё один безумно грузящий базу скриптец:
<?php
$query = $db->query("SELECT * FROM refer GROUP BY keyword ORDER BY date DESC LIMIT 0,10");
while($row = $db->get_row($query)){
preg_match_all('/([0-9]{4})\/([0-9]{2})\/([0-9]{2})\/(.+?).html/', $row['url'], $request_out);
$first = mb_substr($row['keyword'],0,1); // первая буква
$last = mb_substr($row['keyword'],1); // все кроме первой буквы
$first = mb_strtoupper($first);
$last = mb_strtolower($last);
$keyword = $first.$last;
$db->query( "SELECT p.id, p.date, p.short_story, p.xfields, p.title, p.category, p.alt_name FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE p.approve=1 AND p.alt_name = '" . $request_out[4][0] . "' AND date >= '" . $request_out[1][0] . "-" . $request_out[2][0] . "-" . $request_out[3][0] . "' AND date < '" . $request_out[1][0] . "-" . $request_out[2][0] . "-" . $request_out[3][0] . "' + INTERVAL 24 HOUR LIMIT 1" );
while ( $row_post = $db->get_row() ) {
$row_post['date'] = strtotime( $row_post['date'] );
preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row_post['short_story'], $media);
$data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
$info = parse_url($data[0]);
if($info['host'] == 'site.ru') {
$referer_block .= '<li><a href="'.$row['url'].'"><div><img src="' . $data[0] . '" border="0" alt="'.$row_post['title'].'" title="'.$row_post['title'].'" /></div>'.$keyword.'</a></li>';
}
}
}
вот такой вот не очень красивый скрипт с такими же стремными запросами, возможно кто-то сможет подсказать, что с ним можно сделать, чтобы облегчить жизнь сервера?