left join _tmp as с on b.id<c.id and b.grp=c.grp
Тут вместо латинской "си" влезла русская "эс" :)
На 19К строк при 17 группах и 3х результатах из группы у меня выполняется за 0.7 сек., индексы на месте, EXPLAIN не смотрел.
Ну да, нормальный вариант. Если, конечно, результат не фильтруется по правам пользователя или еще как-то.
web-service, вы, кажется, невменяемы. Какая антиреклама, вы чего?
Вам дали ссылку на раздел, где нужно было создавать эту тему.
Да, бывает такая задачка :) Кажется, "прямого" решения нету.
Mtnt, да, как-то так. Либо, если данных зело дофига, а групп не очень -
SELECT DISTINCT(`group`) FROM table
и дальше по результату - циклом:
SELECT * FROM tbl WHERE `group`= $group ORDER BY `date` LIMIT 3
На group должен быть индекс. Но это - на крайний случай. В идеале - пересмотреть задачу :)
Есть немного...
Идея №1: не выгружайте в Яндекс.Маркет товары, которые "на заказ", или дописывайте отсутствующим товарам @available="false" как положено по спецухе. Скрипт выгрузки лежит где-то в районе bitrix/modules/catalog/load/yandex_run.php - изучите его, чтоб узнать, как и где это настроить. Я, если честно, не помню, а системы в исходниках под рукой нету. Этот вариант - самый правильный.
Идея №2: если в.1 не поможет - смотрите в шаблон компонента. Он может оказаться в каком-нибудь самом неожиданном месте. Например, вот в таком:
bitrix/templates/books/components/bitrix/catalog/template1/bitrix/catalog.element/.default/template.php
Ищите и да обрящете :)
В этом чудо-файле нужно найти кусок, где выводится / не выводится ссылка на корзину. Подозреваю, что оно выглядит как-то так:
<?if($arResult["CAN_BUY"] && $arResult['CATALOG_QUANTITY'] > 0):?> <a href="<?echo $arResult["BUY_URL"]?>"><?echo GetMessage("CATALOG_BUY")?></a> <a href="<?echo $arResult["ADD_URL"]?>"><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></a> <?elseif((count($arResult["PRICES"]) > 0) || is_array($arResult["PRICE_MATRIX"])):?> <?=GetMessage("CATALOG_NOT_AVAILABLE")?> <?endif?>
Вам нужно убрать проверку на $arResult['CATALOG_QUANTITY'].
А в принципе - ищите лучше программиста, если сами разобраться не можете.
bearman, хорош троллить! :)
При наличии прямых рук или программера, оснащенного оными, можно выкрутиться. Например, складывать странички в файлы с именем md5($url), а на входе поставить скрипт из 3х строк, который будет делать
echo file_get_contents("pages/".md5($_SERVER['REQUEST_URI']));
Фоток у меня нету, гитарка цела; самочувствие - как и полагается после таких процедур :)
Мы дома :)
Всем спасибо!
И да, я тоже плыву.
И Тимыч плывет.
BTW, Каширин, а ты как? Как продвигается монтаж? ;)
С определенной вероятностью буду. Завтра будет ясно.