for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

Почему тормозит....
Lora
Гость
Автор
Дата: 22.09.05 05:17:11ОтветитьЦитировать
есть 5 баз. самая маленькая по боьему 14.000 записей, самая большая-140.000
Мне нужно последовательно к ним в цикле обращаться, брать из каждой инфу для формирования
отчёта. Так вот такой отчёт формируется больше 15 мин.
индексы использую. Пыталась SQL использовать, но для одной базы всё равно каждую запись нужно анализировать.
Может я зря парюсь, может и должен так долго отчёт формироватсься с такими данными.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
AlexSSS

Сообщений: 6056
Откуда: Tallinn, Estonia
Дата: 22.09.05 05:49:47ОтветитьЦитировать
Если распишешь поподробнее, можно будет говорить конкретнее.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Lora
Гость
Автор
Дата: 22.09.05 06:02:59ОтветитьЦитировать
Начинать анализ нужно с базы поставщиков-14000 записей
беру оттуда код товара.
в базе товаров (140000 записей) нужно взять наименование товара и ещё данные для анализа.
потом база остатков (14000), где нужно взять остаток для товара
затем в базе кодов (140000 ) нужно взять цифровой код для товара
а потом в базе продаж посчитать средние продажи для товара за период
и вот это всё нужно ещё записать в отдельную базу с определёнными полями.

если ещё что надо, я распишу
Ratings: 0 negative/0 positive

Re: Почему тормозит....
piva
[Болтун]

Сообщений: 18492
Откуда: Курган
Дата: 22.09.05 06:19:52ОтветитьЦитировать
Чета мне кажется - что все можно сделать парой SQL запрсов - и будет работать гораздо быстрее




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
AleksM
[Админ]

Сообщений: 17704
Дата: 22.09.05 06:22:02ОтветитьЦитировать
Мне тоже.
Тем более, что в итоге
Цитата:
потом в базе продаж посчитать средние продажи для товара за период
Отсюда следует что обработку нужно и начинать с базы продаж, а "расшифровку" повязать на конечном этапе.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Lora
Гость
Автор
Дата: 22.09.05 06:28:56ОтветитьЦитировать
заказчик SQL не очень жалует. но без него не получается.
сейчас пробую всё через SQL, начиная с базы продаж.
может кто подскажет как можно одним оператором из одной базы в другую перекинуть, используя только alias баз.
append, там вроде имя файла на диске знать надо.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
piva
[Болтун]

Сообщений: 18492
Откуда: Курган
Дата: 22.09.05 06:30:15ОтветитьЦитировать
append from dbf(alias)




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Ден1
Гость
Дата: 22.09.05 06:31:04ОтветитьЦитировать
Здравствуйте!
Могу поделиться аналогичным опытом, приобретенным еще на Fox for Dos. Перебор записей по skip в циклах - почти всегда был медленнее, чем самый сложный запрос SQL. Так что, наверное, стоит попробовать написать Sql запрос, а если и он будет тормозить, то уже обсуждать код данного запроса. Кроме того, не сказано на какой машине и на какой версии Fox выполняется программа - если на стареньком Celeron 333 и на Fox for Dos, то (при таких обьемах) может быть и должна тормозить.
Удачи!
Ratings: 0 negative/0 positive

Re: Почему тормозит....
AlexSSS

Сообщений: 6056
Откуда: Tallinn, Estonia
Дата: 22.09.05 06:32:09ОтветитьЦитировать
дополнительно убедиться в том, что есть индексы по ключевым полям
как минимум, должны быть проиндексированы код товара и даты, которые будут использоваться в запросах

можно посмотреть, какие поля будут использоваться в условии 'WHERE условие' (или ... JOIN... ON условие). Почти наверняка их индексация заметно ускорит работу.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
AlexSSS

Сообщений: 6056
Откуда: Tallinn, Estonia
Дата: 22.09.05 06:34:45ОтветитьЦитировать
> заказчик SQL не очень жалует. но без него не получается.
ты про что?
речь шла не об SQL Server, а об SQL запросах!
Ratings: 0 negative/0 positive

Re: Почему тормозит....
AlexSSS

Сообщений: 6056
Откуда: Tallinn, Estonia
Дата: 22.09.05 06:38:38ОтветитьЦитировать
PS. И обязательно разберись с оптимизацией Рашмора!Точнее с принципом построения оптимизированных условий запроса
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Анонимный пользователь
Гость
Дата: 22.09.05 07:21:05ОтветитьЦитировать
в файл - сервере иногда и посикать лучше , чем селект тащить

а еще можно робота на сервак положить,
пусть там живет и думает, а назад отдает таблицу с готовыми данными

думать надо! размышлять.
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Божья_коровка

Сообщений: 14228
Дата: 22.09.05 12:27:43ОтветитьЦитировать
Цитата:
Перебор записей по skip в циклах - почти всегда был медленнее, чем самый сложный запрос SQL.
Ну незнаю, я когда с VFP5 работала там запросы медленно работали, и предпочитала по старинке циклы использывать, до сих пор не могу избавиться от предубеждения к запросам
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Гулин Федор

Сообщений: 3722
Откуда: Минск
Дата: 22.09.05 12:56:23ОтветитьЦитировать
у SQL запросов есть минус - чувствительность к корректности данных
я как-то убил день Fpd26 - ища ошибку -
там было 4 запроса (своих) - работало с пол-года
проблема была в том что в справочнике изделий просто удвоилось одно изделие
и когда я приписывал наименование по коду (sql запрос ихз 2 dbf)- записи просто удвоивались
( поставил seek - и проблема исчезла)
не всегда есть возможность контролировать все dbf которые используешь
ps да конечно в VFP есть индексы candidate но увы у меня 90 % таблиц из fpd
pps я как-то интереса ради вставил повторную запись в таблицу с индексом candidate в fpd26 - вставилось
дальше не эксперементировал

ppps можно выкинуть сюда структуры - и алгоритм народ посоревнуется в скорости
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Божья_коровка

Сообщений: 14228
Дата: 22.09.05 13:08:11ОтветитьЦитировать
Цитата:
ppps можно выкинуть сюда структуры - и алгоритм народ посоревнуется в скорости
Да было бы даже очень интересно Пути редения выложили бы на общее обозрение со скоростными характеристиками Решений для такого вида обработки данных достаточно много Я в последнее время балуюсь, делать нечего чередую то SQL запросы пишу то по страинке в циклах обрабатываю, заказчик вешается, грит не понимаем мы ваши запросы, просит чтобы не писала запросы
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Igor Korolyov

Сообщений: 30611
Дата: 22.09.05 13:13:18ОтветитьЦитировать
Hi Божья_коровка!

Запрос запросу рознь.
1) Внутренний код среды исполнения, написанный на C++ работает заведомо
быстрее чем "внешний" код написанный на собственно фоксе.
2) Если нужно "встраиваться" в процесс обработки - т.е. возможностей SQL не
хватает и приходится использовать UDF, или просто мы ЗАРАНЕЕ знаем что
запрос пройдя через оптимизатор будет обрабатывать "не те" записи и/или "не
так" (например мы знаем что в итоге надо "взять" всего 1 запись - запрос же
может сначала "просчитать" всё для пары тысяч записей, и лишь потом
"отбросить" ненужные) - тогда вариант с навигационными xBase командами
вполне может оказаться более выигрышным по скорости... Примеры такого типа
задач - "навыбирать записей на определённую сумму", посчитать тренд, создать
широкую "шахматку"...

Обычно написание обработки через xBase команды требует повышенной
бдительности и опытности - тут небольшая ошибка - в алгоритме, или даже
просто в последовательности обработки! влечёт за собой самые печальные
последствия. Тогда как в "простых" SQL запросах "заблудиться" гораздо
сложнее.




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Божья_коровка

Сообщений: 14228
Дата: 22.09.05 13:21:53ОтветитьЦитировать
Цитата:
Обычно написание обработки через xBase команды требует повышенной
бдительности и опытности - тут небольшая ошибка - в алгоритме, или даже
просто в последовательности обработки! влечёт за собой самые печальные
последствия. Тогда как в "простых" SQL запросах "заблудиться" гораздо
сложнее.
Абсолютно с тобой согласна Был опыт ошибок трудных, когда моё художество насчитала более 3х миллионов женщин проживающих в г.Алматы
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Igor Korolyov

Сообщений: 30611
Дата: 22.09.05 13:50:38ОтветитьЦитировать
Hi Божья_коровка!

Не знаю, я бы точно повесился если бы мне пришлось анализировать
scan/seek/go/replace код на пару листов
А SQL запрос методом "усечения" разбирается достаточно быстро... Конечно
есть исключения, но не так уж и часто. Вот если в SQL-е навёрнуты UDF-ы -
тогда да - надо точно понять что именно делает каждая из UDF...




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Почему тормозит....
Божья_коровка

Сообщений: 14228
Дата: 22.09.05 13:53:54ОтветитьЦитировать
Цитата:
А SQL запрос методом "усечения" разбирается достаточно быстро
Да это конечно верно, легче прочитать SQL запрос , но при условии если занешь SQL
Мой заказчик почему то его незнает
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 31 and Guests: 31


© 2000-2018 Fox Club 
Яндекс.Метрика