|
|
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Здравствуйте ! Есть проблемма : конвертирую текстовый файл в таблицу - в ней получается 550 000 записей ; выборка идет очень долго и подчас компьютер вообще виснет , а задача должна раобтать на компьютерах и похуже ! Выбираю из этой здоровой таблицы все записи удовлетворяющие условию: поле_таблицы1=полю_запроса1, поле_таблицы2=полю_запроса2. Посоветуйте как ускорить процесс ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:01 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
>конвертирую текстовый файл >выборка идет очень долго не понял... конвертирует долго - это не ускоришь... выборка откуда? Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:04 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Время конвертации вполне устраивает - не так уж и долго ! Долго идет выборка из таблицы, которая в свою очередь была преобразована из файла. Условие выборки я запостил в 14:01. Поясню: Выборку я делаю на основе записей полученных посредством запроса, а само условие вот такое поле_таблицы1=полю_запроса1, поле_таблицы2=полю_запроса2. И там и там поля текстового типа ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:11 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
550 000 ..... у меня 700 000 каждый день закачивается. На компе - Celeron 466 128 RAM и небыстрым 20 гб. винтом - импортирование идет минут 20 (включает в себя импорт, удаление мусора, заполнение некоторых полей) - группировка данных с несколькими условиями занимает мин. 6-8 мин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:17 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Посоветуйте как ускорить процесс ? А индексы на поля, участвующие в отборе есть? Сжатие/востановление делаешь регулярно? А дефрагментацию диска? Сервис-паки на акес, jet свежие? И там и там поля текстового типа ! а нельзя создать поле-счетчик в этих таблицах и по нему связывать? Было бы быстрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:17 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
надо создать индексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:17 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
полю_запроса1 - т.е. есть ещё и запрос? Сначала Аксес обрабатывает запрос, потом начинает делать джойн. Иногда результат запроса лучше сохранить во временную табличку, а потом джойнить. Ещё можно поситать здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:17 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
А еще хорошо бы сначала сохранить результаты подзапросов во временные таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:21 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Парадон, пость Hummer'а не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:22 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Нельзя ли привести sql строки запросов с описанием типов полей и существующих индексов в таблицах. Желательно оставить только необходимые для понимания структуры запроса поля (для удобочитаемости). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 14:47 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
Вообщем все по порядку. Всего 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])); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:41 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
ну а чо ты хочешь... оно и должно тормозить... вот это должно чуть ускорить: Код: plaintext 1. 2. 3. 4. Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:47 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 15:57 |
|
||
|
! Выборка из ГРОМАДНОЙ таблицы !
|
|||
|---|---|---|---|
|
#18+
1.Почему бы не обединить Mt_dvi и NOM в одну таблицу? 2.Ost ? 3. Если 0000392651 - 10 знаков всегда число, то заменить тип поля на числовой (возможно подойдет даже длинное целое) . 4.Если данные обновляются редко то создать временные таблицы(уже говорили) 5.Желательно проиндексировать все поля по которым происходят обединения и условия. 6.Желательно сократить число запрсов до минимума. (1 запрос Access сможет лучше оптимизировать). 7. Тестировать варианты Пример: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2004, 18:27 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32431493&tid=1676277]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
211ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 524ms |

| 0 / 0 |
