Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Сложный запрос


Recommended Posts

Приветствую всех! Такая задачка.

Пишу парсер XML. Товаров около 9 тыс. Работает медленною, теперь пытаюсь оптимизировать.

 

Появилась идея. Если в магазине несколько языков, то названия атрибутов, групп аттрибутова, категорий, продуктов сохраняются несколько раз с разными language_id. В следствие чего мы получаем кол-во запросов на вставку в "кол-во_языков" раз больше.

 

Идея такая. А почему бы не загнать все категории, товары и т.п. сначала с одним language_id, а потом скопировать эти записи и вставить с другими language_id.

Интересует мнение профессионалов - насколько это реально? ускорит ли это работу парсера? снизит ли нагрузку на БД?

 

Думал сам протестировать и проверить, но мозгов не хватает правильно составить запрос.

Получается, что нужно сначала SELECT всех товаров с language_id=1, потом UPDATE их на language_id=2, и результат потом INSERT.

 

Помогите, пожалуйста, если это вообще реально))))

Надіслати
Поділитися на інших сайтах


Работу парсера не ускорит

 

Основной тромоз = это сам парсер..

 

Вам нужно его загрузить в память, а потом разобрать, вот тут и тормоз.

 

Как вариант.. Не выполнять каждый раз запросы, а подготовить файл для импорта.

 

Можно "собирать" в отдельные куски..

 

А потом единым файлом (или несколькими) все выполнить..

 

Это даст возможность  сделать "отложенный импорт".

 

Кроме того при правильном подходе .. можно.. как бы продолжить с точки останова, что даст возможность грузить большие объемы. Но тут нужно смотреть по месту, будет ли выигрыш.

Надіслати
Поділитися на інших сайтах

Появилась идея. Если в магазине несколько языков, то названия атрибутов, групп аттрибутова, категорий, продуктов сохраняются несколько раз с разными language_id. В следствие чего мы получаем кол-во запросов на вставку в "кол-во_языков" раз больше.

Создайте отдельные временные/постоянные таблицы (без индексов чтобы вставка шла быстрее если записей очень много) в базе и грузите в них сырые данные во временные таблицы. Затем добавляете индексы и расфасовываете все эти данные по таблицам магазина, в том числе можете выполнить два запроса выборки с разным language_id. перед вставкой товаров можете сделать truncate table или использовать REPLACE вместо INSERT. Такую схему работы я увидел в настройках одной программы для прайсов, она так грузит товары в магазин. В принципе определёнными порциями можно загрузить сколько угодно.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.