Таблица с 500 000 строк небольшая - даже для доступа. Любой поиск, который вы делаете, должен давать результаты WELL UNDER 1 SECOND!
Лучший способ решения этой проблемы является просить 90 лет старушке на автобусной остановке следующий вопрос:
При использовании моментальную банкомат имеет смысл скачать каждую учетную запись, а затем попросить пользователя для номера счета? Даже 90-летние дамы на автобусных остановках скажут вам, что было бы лучше узнать номер счета, а затем загрузить 1 запись!
И когда вы используете Google, вы не загружаете ПОЛНЫЙ интернет, а THEN спрашиваете у пользователя, что искать. Или вы создаете одну огромную массивную веб-страницу, которую вы затем скажете, используя ctrl-f для поиска этой огромной страницы браузера.
Так что подумайте о том, как работает все программное обеспечение. Это программное обеспечение не загружает и не готовит все локальные данные, а THEN спрашивает вас, что вы хотите искать. Вы делаете обратное!
Таким образом, простое решение заключается в том, чтобы спросить пользователя перед тем, как вы начнете извлекать данные с сервера. Построить такую форму, которая выглядит следующим образом:
Затем, в соответствии с поиском (скажем на LastName), вы используете этот код в после обновления текстового поля.
Dim strSQL As String
strSQL = "select * from tblCustomers where LastName like '" & Me.txtLastName & "*'"
Me.RecordSource = strSQL
Таким образом, форма ТОЛЬКО тянет данные вам требуется - это подход, даже с 10 миллионами строк будет работать МИГ на вашем компьютере. В приведенном выше примере используется «*», поэтому нужно вводить только первые несколько символов LastName. Результат - это форма «выбора». Затем вы можете перескакивать или редактировать одну запись, нажав на кнопку «очки» выше. Это просто запускает + открывает одну детальную форму. Кодекс является:
docmd.OpenForm "frmCustomer",,,"id = " & me!id
Давайте обратимся еще несколько ваших вопросов:
Есть ли разница между скоростью? (Драйверы ODBC)
Нет, разница в производительности водителя невелика - все они работают примерно одинаково, и пользователи, вероятно, никогда не заметят разницу в производительности при использовании разных драйверов.
Например, 2014 год против 2008 года. Является ли 2014 быстрее, чем в 2008 году с ODBC?
Не обычно. Я имею в виду думать о любом опыте, который у вас есть с компьютерами (если только вы не знакомы с компьютерами?). Каждый раз, когда вы переходите на новое Word или новую учетную программу, эта программа больше, занимает больше времени для загрузки, использует больше памяти, использует больше дискового пространства и почти всегда использует больше обработки. Так что, учитывая последние 30 лет работы настольных компьютеров, почти в каждом случае, следующая более новая версия программного обеспечения требует больше бара, большего количества дисков, большей обработки и, следовательно, работает медленнее, чем предыдущая версия этого программного обеспечения (я хочу быть тем, что ВАШИ знания и опыт - так более новые версии, как правило, не работать быстрее. - есть несколько «редкое» исключения в компьютерной истории, но более поздние версии любого программного обеспечения, как правило, требуют больше ресурсов компьютера и не менее
Теперь один пользователь сказал меня, что иногда, если не много пользователей в TS, доступ намного быстрее. Что вы имеете в виду?
Вышеприведенное не имеет ничего общего с драйверами ODBC. В приведенном выше контексте, когда вы используете Terminal Server, приложение базы данных и внешний интерфейс (Access) работают на одном компьютере/сервере. Это означает, что передача данных с сервера на приложение быстро выполняется BLISTERING и происходит не на скорости сети, а на скорости компьютера (поскольку и база данных, и приложение работают на сервере SAME). Вы можете установить Access на каждом компьютере, а затем получить доступ к данным за пределами сети с сервера на клиентскую рабочую станцию - это происходит медленно, так как есть сеть. С помощью TS тогда приложение и сервер выполняются очень быстро без межсетевого взаимодействия. Массивная обработка и скорость приложения и сервера могут работать вместе - как только данные будут вытащены, так и отображен экран, тогда ТОЛЬКО экранные данные поступают по сетевому проводу. Таким образом, результатом является FAR FASTER, чем запуск Access на каждой рабочей станции.
, что иногда, если не многие пользователи ТС «,
Правильные, так как приложение пользователи работает на сервере, то сеть не существует между приложением и сервером SQL. Однако, поскольку каждый пользователь имеет свое приложение, работающее на сервере (в отличие от каждого компьютера рабочей станции), на сервере требуется больше нагрузки и ресурсов. Если многие пользователи используют сервер, то сервер теперь имеет большую рабочую нагрузку, поскольку сервер должен запускать оба SQL-сервера, а также выделять память и обработку для каждой копии Access, выполняемой на этом сервере.
Традиционная настройка означает, что Access работает на каждом компьютере. Таким образом, память и процессор для запуска Access происходит на каждой рабочей станции - сервер не должен предоставлять Access с процессором и памятью, сервер ТОЛЬКО запускает SQL-сервер и запросы объектов для данных с каждой рабочей станции. Однако, поскольку сети FAR медленнее, чем обработка данных на одном компьютере, то ваша шея бутылки не обрабатывается, но ОЧЕНЬ ограниченная скорость сети. Поскольку на сервере происходят как Access, так и SQL, и вся обработка происходит, гораздо легче перегрузить ресурсы и емкость этого сервера. Однако скорость сети обычно является самой медленной ссылкой в настройках компьютера. Поскольку вся обработка и хруст данных происходит на стороне сервера, только экраны RESULTING и дисплей отправляются по сетевому проводу. Если компьютерное программное обеспечение должно обработать 1 миллион строк данных, а затем отобразить ОДИН общий результат, то только 1 общий результат будет сбрасываться по сетевому проводу, который отображается. Если вы запускаете Access local на каждой рабочей станции и обрабатываете 1 миллион строк, тогда 1 миллион строк данных должны опускаться по его сетевому каналу (однако вы можете изменить свой проект Access, чтобы сервер SQL сначала обработал данные до того, как он сходит с сети чтобы избежать этой проблемы. Однако с TS, поскольку Access не запущен на вашем компьютере, вы не беспокоитесь о сетевом трафике, но вы НЕ ДОЛЖНЫ ОСТОРОЖНО беспокоиться о том, сколько данных Access захватывает с SQL-сервера - таким образом, приведенные выше советы о ТОЛЬКО загрузке данные, которые вам нужны, в форму. Поэтому не загружайте огромные наборы данных в форму Access, а просто спрашивайте пользователя перед тем, как вы начнете извлекать эти данные с SQL-сервера.
Есть много вещей, которые вы можете попробовать/сделать но, в конечном счете, единственное, что даст вам значительное повышение производительности, - это перемещение большей части обработки с передней стороны и на задний план с использованием представлений, хранимых процедур и их функции. Существует целый мир различий в производительности при создании отчета о доступе или заполнении формы путем связывания с исходными таблицами и получения доступа ко всем вашим объединениям, группам и группам и выполнению всего этого в представлении SQL Server и привязке непосредственно к этому. Я взял процесс, который занял 3 минуты, и сделал это за 15 секунд. – SunKnight0