powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ! Выборка из ГРОМАДНОЙ таблицы !
14 сообщений из 14, страница 1 из 1
! Выборка из ГРОМАДНОЙ таблицы !
    #32431220
Bastard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте !
Есть проблемма : конвертирую текстовый файл в таблицу - в ней получается 550 000 записей ; выборка идет очень долго и подчас компьютер вообще виснет , а задача должна раобтать на компьютерах и похуже !
Выбираю из этой здоровой таблицы все записи удовлетворяющие условию: поле_таблицы1=полю_запроса1, поле_таблицы2=полю_запроса2. Посоветуйте как ускорить процесс ?
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431225
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>конвертирую текстовый файл
>выборка идет очень долго
не понял... конвертирует долго - это не ускоришь... выборка откуда?


Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431244
Bastard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Время конвертации вполне устраивает - не так уж и долго ! Долго идет выборка из таблицы, которая в свою очередь была преобразована из файла.
Условие выборки я запостил в 14:01.
Поясню: Выборку я делаю на основе записей полученных посредством запроса, а само условие вот такое поле_таблицы1=полю_запроса1, поле_таблицы2=полю_запроса2. И там и там поля текстового типа !
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431259
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
550 000 ..... у меня 700 000 каждый день закачивается.

На компе - Celeron 466 128 RAM и небыстрым 20 гб. винтом
- импортирование идет минут 20 (включает в себя импорт, удаление мусора, заполнение некоторых полей)
- группировка данных с несколькими условиями занимает мин. 6-8 мин.
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431260
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветуйте как ускорить процесс ?

А индексы на поля, участвующие в отборе есть?
Сжатие/востановление делаешь регулярно?
А дефрагментацию диска?
Сервис-паки на акес, jet свежие?


И там и там поля текстового типа !
а нельзя создать поле-счетчик в этих таблицах и по нему связывать? Было бы быстрей.
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431263
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо создать индексы
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431264
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полю_запроса1 - т.е. есть ещё и запрос?
Сначала Аксес обрабатывает запрос, потом начинает делать джойн. Иногда результат запроса лучше сохранить во временную табличку, а потом джойнить. Ещё можно поситать здесь
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431273
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще хорошо бы сначала сохранить результаты подзапросов во временные таблицы.
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431278
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парадон, пость Hummer'а не видел.
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431343
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя ли привести sql строки запросов с описанием типов полей и существующих индексов в таблицах.

Желательно оставить только необходимые для понимания структуры запроса поля (для удобочитаемости).
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431463
Bastard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем все по порядку.
Всего 4 таблицы:
Nom, Dvi, Ost в них около 5000 записей и здоровая SKMTR - 500000 записей.

Все выборки производяться по трем полям, все поля текстового типа:
Поле1, NOM - название полей в таблицах
0000392651 - 10 знаков
код материала
Поле3 INOM1 - название полей
НЕФТЬ (КОТЕЛЬНОЕ ТОПЛИВО) МАЛОСЕРНИСТАЯ - 256 знаков
Описание материала
Поле7 ED_IZM - название полей
796 - 3 знака
единицы измерения

Первый запрос MD_DVI_BP

SELECT Mt_dvi.NOM
FROM Mt_dvi LEFT JOIN Skmtr ON Mt_dvi.NOM = Skmtr.Поле1
WHERE (((Skmtr.Поле1) Is Null));


На его основе второй NOM_DVI_BP

SELECT NOM.INOM1, NOM.NOM1, NOM.ED_IZM
FROM NOM, MD_DVI_BP
WHERE (((NOM.NOM1)=[MD_DVI_BP]![NOM]));


И последный из здоровой таблицы

SELECT Skmtr.Поле1, Skmtr.Поле3, Skmtr.Поле7
FROM Skmtr, NOM_DVI_BP
WHERE (((Skmtr.Поле3) Like [NOM_DVI_BP]![INOM1]) AND ((Skmtr.Поле7)=[NOM_DVI_BP]![ED_IZM]));
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431473
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а чо ты хочешь... оно и должно тормозить...

вот это должно чуть ускорить:
Код: plaintext
1.
2.
3.
4.
SELECT NOM.INOM1, NOM.NOM1, NOM.ED_IZM 
FROM NOM, [SELECT Mt_dvi.NOM 
  FROM Mt_dvi LEFT JOIN Skmtr ON Mt_dvi.NOM = Skmtr.Поле1 
  WHERE (((Skmtr.Поле1) Is Null))]. As MD_DVI_BP 
WHERE (((NOM.NOM1)=[MD_DVI_BP]![NOM])); 

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431493
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT Skmtr.Поле1, Skmtr.Поле3, Skmtr.Поле7
FROM Skmtr
INNER JOIN NOM_DVI_BP ON
Skmtr.Поле3 = NOM_DVI_BP.INOM1 AND Skmtr.Поле7=NOM_DVI_BP.ED_IZM
...
Рейтинг: 0 / 0
! Выборка из ГРОМАДНОЙ таблицы !
    #32431770
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.Почему бы не обединить Mt_dvi и NOM в одну таблицу?
2.Ost ?
3. Если 0000392651 - 10 знаков всегда число, то заменить тип поля на числовой (возможно подойдет даже длинное целое) .
4.Если данные обновляются редко то создать временные таблицы(уже говорили)
5.Желательно проиндексировать все поля по которым происходят обединения и условия.
6.Желательно сократить число запрсов до минимума. (1 запрос Access сможет лучше оптимизировать).
7. Тестировать варианты
Пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT Skmtr_1.Поле1, Skmtr_1.Поле3, Skmtr_1.Поле7
FROM (Mt_dvi LEFT JOIN (NOM LEFT JOIN Skmtr AS Skmtr_1 
ON (NOM.INOM1 = Skmtr_1.Поле3) 
AND (NOM.ED_IZM = Skmtr_1.Поле7)) 
ON Mt_dvi.NOM = NOM.NOM1) LEFT JOIN Skmtr ON Mt_dvi.NOM = Skmtr.Поле1
WHERE (((Skmtr.Поле1) Is Null));
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ! Выборка из ГРОМАДНОЙ таблицы !
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]