Как производится выборка? Как база построена? Про сопоставление товаров я понял, но не понятно, как это работает внутри.
вообщем переделал все запросы касательно выборки товаров из инет магаза на RIGHT JOIN, получился 3-х этажный запрос вместо 3 и цикла в 70тыс. По скорости стало быстрее менее чем на 1%
explain выводит какуюто туфту, может не так делаю. Ыот сам запрос: EXPLAIN SELECT p.product_id, p.product_name, pmx.manufacturer_id FROM jos_vm_category_xref cx RIGHT JOIN jos_vm_product_category_xref pcx ON cx.category_child_id = pcx.category_id RIGHT JOIN jos_vm_product p ON pcx.product_id = p.product_id RIGHT JOIN jos_vm_product_mf_xref pmx ON p.product_id = pmx.product_id WHERE category_child_id = '1150' в него добавил третий RIGHT JOIN тем самым сократил 70тыс запросов на получения id производителя.. стало быстрее на 11%. Щас еще добавлю 1 RIGHT JOIN последний для получения имени производителя по id. тем самыи избавлюсь от последних 70 тыс запросов, и отпишу о результах.
такс, вообщем переделал еще раз теперь все уложил в 1 запрос: SELECT p.product_id,p.product_name,m.mf_name FROM jos_vm_category_xref cx RIGHT JOIN jos_vm_product_category_xref pcx ON cx.category_child_id=pcx.category_id RIGHT JOIN jos_vm_product p ON pcx.product_id=p.product_id RIGHT JOIN jos_vm_product_mf_xref pmx ON p.product_id=pmx.product_id RIGHT JOIN jos_vm_manufacturer m ON pmx.manufacturer_id=m.manufacturer_id WHERE category_child_id='1150' стало еще быстрее на 5%, в общем после всех изменений выгадал гдето 20%... не значительные изменения здесь не описывал. Главный вопрос: как правильно сделать? на данный момент, как писал выше работает так: есть база товаров (от поставщиков 70тыс.) и есть база товаров(инет. магаз. 70 тыс.), один раз считывается вся база с товарами поставщиков в массив и так же в массив скачивается база товаров с инет магаза и далее в цикле бирется один товар из массива инет магаза и сравнивается со всей базой баставщиков, причем получается 2 цикла, один в другом, бирем 70тыс и каждый товар сравниваем еще с 70 тыс. получается 70 тысяч раз по 70 тыс раз. может есть другие варианты как сделать лучше?
блин, ну зачем кучу раз гонять эти проверки Делаешь одно доп поле в таблице с товарами - типа поисковый индекс, в который пишешь название товара без всех закорючек Когда приходит новый товар уже по этому полю ищешь его одним запросом и все. А потом уже для тех что подобрались вытаскиваешь что нужно еще - производителей и тд Также один раз можно прогнать по всей базе уже существующих товаров и больше их не трогать никогда)