| genkin38 
 
  
 Junior Member
 | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ладно, статью писать не буду, некогда
  . В тестировании участвуют: КейДБ вер. 1.50.03, ВистаДБ вер. 2.0.15.1 (dll) и АбсолютДБ вер. 4.88
 Итак, исходные данные: DBF-файл с кол-вом записей - 27839, размером 15633 K, потрошится на пять таблиц: Организации, телефоны организаций, население, справочник улиц, справочник населенных пунктов. По полям по которым производится поиск (название улицы, населенного пункта, лицевого счета предприятия) и по полям которые впоследствии будут использоваться в SQL-запросе создаются индексы. Ранее я создвал дополнительные индексы, от которых отказался, и это повлияло на размер БД.
 Хочу заметить, что используется индикатор, если абонент из категории население - строка фио парсится на отдельные ф. и. о., в общем это не чистое время работы движка. Хотя, при отключенном индикаторе время различается на 1 сек.
 В КейДБ использовалось "слабое" криптование таблиц, что-бы не просмтаривалось в любом редакторе. Как написано в документации, при использовании "сильного" (strong) крипто возможно снижение скорости работы. Эксперементировать не стал :-\
 В ВистеДБ использовался алгоритм BlowFish как более быстрый (проверено опытным путем), в Абсолюте - тоже простенький алгоритм - Square. Кстати у Абсолюта куча алгоритмов - аж 7! Зачем столько? В Висте есть еще DES и все, у КейДБ качестве "сильного" криптоалгоритма используется BlowFish. Итак, результат по скорости записи в БД и размер оной позле ее заполнения:
 КейДБ - 65 сек.,          6'508 K
 ВистаДБ - 74 сек.,       6'219 K
 АбсолютДБ - 95 сек.,   5'028 К.
 Хочу заметить, что АбсолютДБ имеет много настроек. Для уменьшения размера БД - PageSize and PageCountInExtent settings, для увеличения быстродействия - MaxConnections, MultiUser, in-memory tables. Для ускорения вставки - StartTransaction и Commit. Некотрые я задействовал (см. размер БД, индексы), некотрые нет (in-memory tables, StartTransaction и Commit). В плане документации - это однозначный лидер - толковый хелп.
 Теперь про скорость выборки:
 Абсолют поддерживает такой синтаксис:
 
 select * from person p
 right join (select * from dept WHERE iddept = 1) d on d.idDept = p.idDept
 left join street s on p.idstr = s.idStreet
 left join PopPoint pp on p.idpp = pp.idpp
 
 т.е. вложенные подзапросы, и для него это наиболее быстрый вариант (расписывать почему сейчас не буду), Виста поддерживает вложенные запросы только в WHERE, не поддерживает RIGHT JOIN. Поэтому запрос для Висты вглядит так:
 
 select * from person p
 left join street s on p.idstr = s.idstreet
 left join poppoint pp on p.idpp = pp.idpp
 where p.iddept = 1
 
 КейДБ поддерживает RIGHT JOIN но не поддерживает вложенные запросы кроме как в WHERE, соответственно запрос будет таким:
 
 Select * from Person p
 right join dept dd on p.IdDept = dd.IdDept
 left join PopPoint pp on p.IdPp = pp.IdPp
 left join Street s on p.IdStr = s.IdStreet
 where dd.iddept = 1
 
 Выборка осуществлялась по таблице PERSON  с количеством записей 21'624. В результирующий набор попало 11'976 записей. А теперь время выполнения запроса:
 
 КейДБ - 1,5 сек.
 АбслютДБ - 5 сек.
 ВистаДБ - 6,6 сек.
 
 Размеры ЕХЕ:
 
 ВистаДБ - 673 К + Vistadb20.dll - 400 K (пожато aspack-ом)
 КейДБ - 925 К
 Абсолют - 1'318 К
 
 Во избежание неконструктивной критики - этот мини обзор для тех кто решил - не БДЕ! Для тех, кому важен размер программ (любителям slimware
  ). Вот им и адресовано. :-\ 
 |