Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Большая база DBF. Что лучше использовать? + попадание в индекс (число прочтений - 3623 )
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Большая база DBF. Что лучше использовать? + попадание в индекс
20. Сентября 2012 :: 18:32
Печать  
Есть достаточно большая база DBF. RA и RG насчитывают более 3,5 млн. записей.
Хочется максимально быстро рассчитать итоги регистра с фильтром на позицию/дату
OleDB сильно проигрывает sqllite + прямой запрос и штатному расчету
Что лучше использовать?

Нужно условие по списку номенклатуры, OleDB очень тормозит (отбора движений нет по Номенклатура)
На OleDB упорно не попадаю в индекс даже если пишу where iddoc+str(lineno,4)+str(actno,6)

Может подбросите простой пример как оптимальнее отобрать движения... ну и итоги заодно? Улыбка

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #1 - 20. Сентября 2012 :: 18:57
Печать  
С полным попаданием разобрался, помогло == вместо =
А если условие на номенклатуру по таблице движений, то придется, похоже, создавать индекс
Но почему такая разнциа между штатным расчетом? Наверное нужно неспеша все пересмотреть по кусочкам
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #2 - 21. Сентября 2012 :: 06:01
Печать  
Вадимко писал(а) 20. Сентября 2012 :: 18:32:
OleDB сильно проигрывает sqllite


Это заблуждение, оледб в разы быстрее, чем скульлайт при попадании в индекс
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #3 - 21. Сентября 2012 :: 06:17
Печать  
на вот тебе, на поиграться:

  

_____________________________________.ert ( 104 KB | Загрузки )
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #4 - 22. Сентября 2012 :: 17:54
Печать  
Спасибо!
Нет быстрой обработи движений пока что (может надо будет сделать), журнал, конечно, пакостит
Сравнил на январе - проигрывает фокс, хотя вроде бы оптимизация есть (примерно в 1,3 раза, иногда больше)
Вот текст запроса из отладки:

Код
Выбрать все
SELECT
   Рег.Номенклатура as [Товар_1c_type_Справочник_1c_dot_Номенклатура]
   ,Рег.Склад as [Склад_1c_type_Справочник_1c_dot_Склады]
   ,SUM(Рег.НачОст) НачОст
   ,SUM(Рег.Приход) Приход
   ,SUM(Рег.Расход) Расход
   ,SUM(Рег.НачОст+Рег.Приход-Рег.Расход) КонОст
FROM
	(
   SELECT
		 Итоги.sp408 Номенклатура
		,Итоги.sp418 Склад
		,Итоги.sp411 НачОст
	    ,0 Приход
	    ,0 Расход
	FROM
		rg405 Итоги
	WHERE
		DTOS(Итоги.period)+Итоги.sp408
		LIKE  (DTOS({d '2011-12-01'})+'_________')

   UNION ALL

	SELECT
		 Движения.sp408
		,Движения.sp418
 		,Движения.sp411 * (1 - Движения.debkred * 2)
	    ,0
	    ,0
	FROM
		ra405  Движения
   INNER Join 1SJOURN Жур ON Жур.iddoc = Движения.iddoc
	WHERE
		DTOS(Жур.date)+Жур.time+Жур.iddoc BETWEEN
	     DTOS({d '2012-01-01'})+'	'+'	   '
	 And DTOS({d '2011-12-31'})+'ZZZZZZ'+'ZZZZZZZZZ'

	UNION ALL

	SELECT
		 Оборот.sp408
		,Оборот.sp418
	    ,0
		,Оборот.sp411*(1-Оборот.Debkred)
		,Оборот.sp411*Оборот.Debkred
	FROM
		ra405  Оборот
   INNER Join 1SJOURN Жур ON Жур.iddoc = Оборот.iddoc
	WHERE
		DTOS(Жур.date)+Жур.time+Жур.iddoc BETWEEN
	     DTOS({d '2012-01-01'})+'	'+'	   '
	 And DTOS({d '2012-01-31'})+'ZZZZZZ'+'ZZZZZZZZZ'
    ) Рег
Group by Рег.Номенклатура,Рег.Склад
 



  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #5 - 22. Сентября 2012 :: 19:52
Печать  
Поставил ради эксперимента быструю обработку движений
Фокс быстрее оказался в 2,2-2,3 раза
В общем проблема при отсутствии галки в запросе "Оборот"
Сейчас еще раз попробовал первый вариант, вообще разница не в вользу фокса... до 9 раз
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #6 - 24. Сентября 2012 :: 06:17
Печать  
Вадимко писал(а) 22. Сентября 2012 :: 19:52:
Поставил ради эксперимента быструю обработку движений
Фокс быстрее оказался в 2,2-2,3 раза
В общем проблема при отсутствии галки в запросе "Оборот"
Сейчас еще раз попробовал первый вариант, вообще разница не в вользу фокса... до 9 раз


Не верю. Чем проверял хоть, что фокс попал в индекс ?
Фокс при вопадании в индекс всегда быстрее в разы, чем 1sqlite на запаросах с group by, и табличка с журналам там не при чем..

  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #7 - 01. Октября 2012 :: 17:56
Печать  
Смотрел штукой Execute_plan_foxpro_001.ert
Ты же знаешь какие там индексы в регистре без галок и в журнале Улыбка
Как могу так и пишу, соединение по IDDOC
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #8 - 14. Ноября 2012 :: 22:46
Печать  
У меня комп загружался сильно, база большая
Было время поэксперементировать более справедливо
В общем-то без индексов прироста практически нет по сранению со штатной выгрузкой итогов по фильтру-списку (1,3 раза в среднем)
С индексами: фокс быстрее оказался в 1,5-2,5 раза в зависимости от кол-ва позиций номенклатуры
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Большая база DBF. Что лучше использовать? + попадание в индекс
Ответ #9 - 15. Ноября 2012 :: 11:30
Печать  
Ага.. у нас до 20 раз разница доходит простое получение останков  по партиям. (индексы естесственно есть)
Причем проверялось на одинаковых запросах + в скульлайте явно указывался индекс..
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать