За последние 24 часа нас посетили 48516 программистов и 1729 роботов. Сейчас ищут 662 программиста ...

Что быстрее будет работать?

Тема в разделе "Прочие вопросы по PHP", создана пользователем jasper, 25 июн 2010.

  1. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Как производится выборка? Как база построена?
    Про сопоставление товаров я понял, но не понятно, как это работает внутри.
     
  2. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    вообщем переделал все запросы касательно выборки товаров из инет магаза на RIGHT JOIN, получился 3-х этажный запрос вместо 3 и цикла в 70тыс. По скорости стало быстрее менее чем на 1% :(
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я так понял, что структура базы - засекреченная информация :)
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    покажи EXPLAIN запроса?
     
  5. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    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 тыс запросов, и отпишу о результах.
     
  6. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    а структура базы обычная joomla 1.5 как ее здесь представить не знаю
     
  7. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    такс, вообщем переделал еще раз теперь все уложил в 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 тыс раз.

    может есть другие варианты как сделать лучше?
     
  8. alBoo

    alBoo Активный пользователь

    С нами с:
    27 мар 2008
    Сообщения:
    63
    Симпатии:
    0
    блин, ну зачем кучу раз гонять эти проверки
    Делаешь одно доп поле в таблице с товарами - типа поисковый индекс, в который пишешь название товара без всех закорючек
    Когда приходит новый товар уже по этому полю ищешь его одним запросом и все. А потом уже для тех что подобрались вытаскиваешь что нужно еще - производителей и тд
    Также один раз можно прогнать по всей базе уже существующих товаров и больше их не трогать никогда)
     
  9. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    не совсем понял, расскажи подробнее.
     
  10. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    jasper
    это то, что я говорил про необходимость уникального пля
     
  11. jasper

    jasper Активный пользователь

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    про поле я понял, но не понял как это будет работать... разверни ответ плиз...