Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура БД / 5 сообщений из 5, страница 1 из 1
08.06.2015, 18:08:35
    #38979463
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД
Есть задача. Главное скорость. Задача состоит в следующем:
1. Есть куча прайсов в екселе с позициями 50К-100К
2. Прайсы приходят 1-2 раза в день
Надо обновлять БД как можно оперативнее. Делал как "учили" сделал таблицу поставщиков, производителей, товаров и склад-наличие, но анализ есть ли данный "поставщик", "производитель", "товар" и данная позиция от данного поставщика в складе-наличии и добавление нужных при их отсутсвии или "обновлении" в складе-наличии занимает тучу времени: только 1 прайс обрабатывается 5-10 мин * 20-30 прайсов - пол дня на обновление бред! Можно данный метод можно попробовать усовершенствовать, но сама задержка в том, что формирование 40к отдельных запросов очень длительна (например, 1к запросов по 1 в 10-100 раз дольше 1го запроса в 1к записей (я о инсерте)), но если "инсерт" я усовершенствую, то как быть с "селетами" ведь их будет 3*40к (если 40к записей)?
Решил сделать кучу (20-30) таблиц складов-наличия, и не распределять позиции из ексель по кучке таблиц (поставщик, производитель, товар), а все писать в 1 таблицу путем: очистил таблицу(или создал) и засунул все записи из ексель в таблицу склад наличие. Мой метод свел до 3-5 секунд на внесение (40К записей одним инсертом не вбивается, сделал 40 инсертов по 1к), а так бы вообще в 1с вложился. Вывод сделать при помощи униона
Может кто-то подскажет более универсальный метод, что бы не изобретать велосипед?
...
Рейтинг: 0 / 0
08.06.2015, 18:18:29
    #38979478
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД
И можно ли как то средствами MySQL получить название таблиц из другой таблицы или лучше не парится сделать формирование скл-запроса средой разработки (в моем случае делфи)
Я о
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
for ID:=1 to MaxID-1 do
begin
  Select * 
  From BD_ + ID 
  Where ...
  Union
end
Select * 
From BD_ + MaxID
Where...
...
Рейтинг: 0 / 0
08.06.2015, 18:21:36
    #38979481
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД
Excel - SaveAs - CSV - LOAD DATA INFILE - UPDATE
...
Рейтинг: 0 / 0
08.06.2015, 18:22:54
    #38979484
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД
Dmitry YЕсть задача. Главное скорость.Это неправильная задача. Скорость редко попадает хотя бы в первую десятку требований. Скорее всего, проектируемая БД должна решать какие-то задачи бизнеса.
Dmitry Yпроизводителей, товаровА что, у всех ваших поставщиков унифицированы справочники производителей и наименований товаров?

У нас аналогичная часть БД устроена просто - две таблицы - справочник прайс-листов (организация, валюта прайс-листа, множитель наценки, дата последней загрузки и т.п.) и содержимое прайс-листа с полем-ссылкой на первую таблицу. При необходимости обновить прайс-лист удаляем все записи из второй таблицы, загружаем новые. При 2 миллионах позиций проблем с быстродействием нет.
...
Рейтинг: 0 / 0
08.06.2015, 18:42:16
    #38979505
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД
Dmitry Y,

Универсальный метод такой:

делаешь БД

пишешь запросы

делаешь так, чтобы они работали быстро.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура БД / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]