MS Access перестает работать, когда я открываю запрос, имеющий 20 миллионов записей с одним видом

0

У меня есть запрос, который объединяет разные таблицы без какой-либо ссылки, поэтому он создает комбинацию. Число записей достигло 20 миллионов, я отсортировал эти записи по одному полю. MS Access зависает и перестает работать. Пожалуйста, любой, кто может помочь в ускорении запроса или заставить его работать. Спасибо

  • 4
    С этими цифрами вам нужно перейти на взрослую РСУБД.
  • 0
    Можете ли вы поделиться более подробной информацией об исходных данных? Доступ имеет ограничение по размеру. Вы пробовали добавлять по одному и смотреть, как увеличивается размер БД? Они в разных БД или в одной?
Показать ещё 5 комментариев
Теги:
database
ms-access

2 ответа

2

Объединение таблиц, не сообщая о том, как связать одну таблицу с другой, называется "кросс-объединением", как вы говорите, оно создает комбинацию записей.

Легко получить очень большие результаты с использованием кросс-соединения, всего 5000 строк в каждой из двух таблиц в перекрестном соединении будут генерировать 25 миллионов записей, всего 300 записей в каждой из трех таблиц дадут 27 миллионов. При наличии всего 5000 или 300 записей в таблице MSAccess будет летать, но попросить его запустить запрос для создания записей ~ 20M потребуется время, именно так оно и есть.

Я предлагаю вам рассказать нам, что вы пытаетесь сделать, я ожидаю, что между таблицами должна быть связь или, по крайней мере, что-то в запросе, чтобы сообщить MSAccess, какой из записей 20M вы хотите видеть. Я ожидаю, что вы не захотите прокручивать через 500 000 страниц данных, чтобы найти то, что вы ищете.

  • 0
    У меня есть игроки за разными столами, и я делаю комбинацию команд (я уже пробовал разные методы, запрос составляется быстрее всего). Я создал комбинацию команд, которые изначально составляют 600 миллионов, но по различным критериям я отфильтровал их до 20 миллионов , Теперь я хочу видеть лучшие команды по количеству набранных очков, поэтому, когда я применяю сортировку к полю очков (по убыванию), он перестает работать.
  • 0
    Подумайте о том, что вы на самом деле говорите. Вы говорите, чтобы посмотреть на (предположительно рассчитанный) счет. Он должен рассчитать количество баллов для каждой из 20 миллионов записей и поместить те, которые набрали наивысшие баллы, в верхнюю часть и упорядочить остальные из них таким же образом. Это большая работа, особенно для инструмента, который не особенно хорошо разработан для обработки больших наборов данных. То, что вы МОЖЕТЕ попытаться сделать, - это внести top 50 (или 20 ... или 100) в свои записи, чтобы вы не возвращали ВСЕ данные, а только те, которые вас интересуют ... это все еще может быть медленным, хотя.
1

Один из методов заключается в изменении запроса на запрос create-table без использования фильтров.

Затем создайте индексы в новой таблице в полях, которые вы хотите фильтровать.

Теперь используйте эту таблицу в качестве источника в запросе, где вы применяете фильтры, которые вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню