Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1300 / 506 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
1

Скорость работы базы mdb. под оболочкой MS Acces vs. собственного софта

15.10.2013, 19:34. Показов 2559. Ответов 8
Метки нет (Все метки)

Приветствую! Вопросом как то задавался, но однозначный ответ так и не получил.
Есть база Access. В ней только таблицы импортированные и связанные. Больше ничего.

Теперь, чтобы от нее был толк, нужны запросы sql и по необходимости программирование VBA (процедуры, функции).

Вопрос: есть ли разница в скорости работы базы, если все запросы и программу в целом делать в программе MS Access или иной программе (VB.NET, Си++, формировать запросы в sql-developere) подключивший к файлу базы ? Слышал, что разница есть. Аксес некоторые запросы мои выполняет по 2-10 минут, особенно медленно, когда с подвязанными файлами больших размеров (К примеру через select объединить 20-30 файлов подвязанных по несколько десятков тысяч строк). Теоретически MS Access это программа-оболочка написанная на каком-то ЯП (не знаю каком, может даже на том же Си++), по идее скорость выполнения запросов не должны отличаться.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2013, 19:34
Ответы с готовыми решениями:

Создание mdb базы (файла) из под Дельфи
Вопросов, как таковых, два: 1. Создание mdb базы (файла) из под Дельфи. Именно формата mdb, а не...

Access. Копирование с одной базы b1.mdb содержимое в другую базу b2.mdb
Через ADOConnection1 подключил базу b1.mdb, ADOConnection2 подключил базу b2.mdb. В каждой из баз...

Закачка данных из одной базы (MDB) в другую (MDB)
Подскажите, пожалуйста, как решить следующую задачу: В одной базе есть таблица с набором записей и...

MS Acces (создание базы данных)
Добрый вечер. Ребят, подскажите какую таблицу следует добавить и как поставить между ними связь...

8
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
15.10.2013, 19:52 2
К примеру через select объединить 20-30 файлов подвязанных по несколько десятков тысяч строк.
алгоритм обработки тоже оказывает большое значение
наверняка у вас пара файлов без индексов и 28 справочников
0
1300 / 506 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
15.10.2013, 20:09  [ТС] 3
Сейчас делал тест. Взял 2 файла по 25 Мб каждый и сделал обычны запрос на выборку по общему полю.
В аксесе запрос формировался 11 сек, в sql-developere 8 сек. Тестил 5 раз, время не менялось.

Следовательно, аксес медленее обрабатывает. Почему интересно? sql-запрос совершенно одинаковый использовал

Добавлено через 9 минут
Цитата Сообщение от shanemac51 Посмотреть сообщение
алгоритм обработки тоже оказывает большое значение
наверняка у вас пара файлов без индексов и 28 справочников
нет, все файлы подвязанные с диска и все без индексов. Я понимаю, что одно и тоже действия часто можно сделать по разному, что отразиться на скорости, но не всегда
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
15.10.2013, 21:32 4
в одной задаче было много файлов ДБФ

вар 1.
--для ускорения создали пустую рабочую базу
--перегнали в нее ДБФ, создали индексы
--работу проводил ответственный экономист --выполнял проверочный запрос
--если результаты запроса --удовлетворяли
-----открывал рабочую базу для остальных пользователей

вар2
--задавались условия выбора, но выбор проводился в пустую рабочую базу на локальном компе
--далее юзер анализировал выбранное на локальном компе, не создавая блокировки по сети
--деталей /сборок было достаточно много
--списки при выборе не применялись- только свободный выбор по 9 полям--каждый знал что-то свое
(цех-изделие=гравировка-наименование-распоряжение......), цеховики искали по своим данным, конструкторы/технологи --по своим, прочие отделы --по третьим
--зацепившись за что-то --уточняли деталь, трудоемкость, расценки......
==========
далее работа по вееру входимости (что входит можно реализовать деревом, а здесь получали и куда входит, часто деталь входила в сотни сборок, десятки изделий )
0
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
16.10.2013, 02:26 5
Есть база Access. В ней только таблицы импортированные и связанные. Больше ничего.
Теперь, чтобы от нее был толк, нужны запросы sql и по необходимости программирование VBA.
Собственно, таблицы назвать базой данных можно с натяжкой: в них нет (и не может быть) порядка: там всё навалено как и когда придётся. Это - всего лишь данные; чтобы получить их них информацию, эти данные нужно как-то обработать "в определённом порядке". Порядок как раз и создают запросы к этим таблицам.

Представьте себе, например, (условно) Вассермана с его эрудицией. С точки зрения внешнего к нему субъекта - по определению не может быть ясно, какой и сколько инфы находится в его голове: мало того, что большая часть данных, там находящихся, недоступна, но и те, которые осознаются, требуют осмысления, т.е. - (логич) выводов.

"Достать" оттуда информацию можно только адекватными во-просами, за-просами: что; где; когда; в каком порядке; сколько (при каких условиях) и т.д.
Другими словами, к БД нужна ещё и СУБД. Например, голые таблицы с перечнем трансп средств мало о чём могут сказать сами по себе (кроме, наверно, примерного их объёма). Только запросами можно получить из них конкретную информацию: сколько на учёте в данный момент, где и сколько и проч.

Формы нужны для удобного восприятия этой информации, а также для более удобного управления данными таблиц. При этом, в Аксессе большинство этих задач можно решать даже без программирования: используя только функционал, уже встроенный в формы, то бишь - мышкой :-)

есть ли разница в скорости работы базы, если все запросы и программу в целом делать в программе MS Access или иной программе (VB.NET, Си++, формировать запросы в sql-developere) подключивший к файлу базы ?
Слышал от опытных людей, что, кажется, если создавать формы, например, в Visual Basiс, то работает несколько быстрее, но уступает Аксу по скорости разработки, в котором всё изначально заточено на работу с таблицами (БД). Про С уже не говорю...

Аксес некоторые запросы мои выполняет по 2-10 минут, особенно медленно, когда с подвязанными файлами больших размеров (К примеру через select объединить 20-30 файлов подвязанных по несколько десятков тысяч строк).
Несколько десятков тысяч строк - это существенный объём (считай, население большого города). Таблицы в других форматах нужно адаптировать под Аксесс:

Цитата Сообщение от shanemac51 Посмотреть сообщение
для ускорения создали пустую рабочую базу
--перегнали в нее ДБФ, создали индексы
Индексы - это оглавление в книге, например. Найти нужную инфу на неск десятках тысяч страниц без оглавления - вот вам и потеря скорости обращения к данным...
1
1300 / 506 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.10.2013, 20:01  [ТС] 6
Андрэич, как известно, любая нормальная база данных имеет базу, сервер и программу-оболочку для работы с ней (через сервер разумеется). Access исключение - три в одном. Подключившись к базе аксес из того же VB.net/Делфи/Си можно запустить запрос написанный на самой базе (аксес здесь) или же запрос сделать в программе-оболочке, то есть в базе как будут только таблицы так они и останутся, запросы запихать в .exe программу. Собственно вопрос в скорости - если запрос создать в аксесе и запускать его с .exe уже готовый запрос. Или непосредственно в .exe сделать запрос и его запускать скорость различается?
0
Эксперт MS Access
26717 / 14397 / 3190
Регистрация: 28.04.2012
Сообщений: 15,782
16.10.2013, 22:56 7
Движок джета довольно шустрый, но только в определенных условиях. Это свои таблицы (не присоединенные) и относительно несложные запросы. На сложных запросах часто формируются далеко не самые эффективные планы. И это понятно - движок сделан на принципах конца восьмидесятых прошлого столетия. Ну и, конечно, файл-серверная архитектура, при больших объемах данных, существенно снижает скорости выполнения. В общем, если волнуют скорости и объемы данных не слабые, то акс, как БД, не лучшее решение.
1
1300 / 506 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.10.2013, 23:03  [ТС] 8
mobile, а есть разница в скорости работы скажем 2003 и 2007 аксесса или еще новее (не знаю какой самый новый) ? Движок не менялся?
0
Эксперт MS Access
26717 / 14397 / 3190
Регистрация: 28.04.2012
Сообщений: 15,782
16.10.2013, 23:10 9
Движок, начиная с Jet 4.0 не менялся. И к сожалению, насколько я знаю, изменения не предвидятся. Есть слабое утешение в том, что в аксе можно включить режим ANSI-92 (против стандартно принятого ANSI-89), но честно говоря, особых бонусов не приносит. А неудобства из-за его включения есть.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2013, 23:10

добавление базы данных acces на форму
добрый вечер.возникла такая проблема,при попытки добавления бызы данных на форму выдает вот такой...

Как вытащить подпись поля из Acces базы
Добрый день! Если ли такое св-во у Fields

Скорость выгрузки из ado .mdb в xls
Я заметил, что скорость выгрузки данных из ado .mdb в .xls очень низкая. Работаю с ADOQuery. Меня...

RadioButtonList и две базы данных Acces & SQL
добрый день, подскажите пожалуйста алгоритм выполнения задачки. даны две базы данных пациентов...

Редактирование картинки в поле-OLE базы Acces данных средствами C#?
Помогите пожалуйста справится со следующей задачей: нужно реализовать редактирование в таблице где...

Как повысить скорость обращения к базе данных .mdb?
Создал базу данных с помощью MSAccess и подключился к ней из VB6 через adodc используя для этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.