Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

Обработка большой БД. Ошибка "...is too large"   Найти похожие ветки 

 
GEM   (2006-08-10 14:19) [0]

Доброго времени суток!

В базе FoxPro имеется 8 таблиц, из них одна главная, остальные детальные с первичными ключами. Соответственно чтобы вытащить иформационноемкие данные, необходимо их связать - для чего я использую ADOQuery, SQL запросы на выборку с INNERJOIN. Компонент для отображения данных - DBGrid. Иногда для выполнения определнной задачи мне достаточно использовать SQL с WHERE. Главная таблица может содержать в себе данные до 300 000 записей. 2 из детальных 10 000-20 000, остальные в пределах 1000 записей.
При запуске запросов спустя n-ое количество времени выходит ошибка "c:\docu~...\....tmp is too large". Можно ли как либо это обойти?
Второй вопрос: есть ли более оптимизированный подход чем мой с запросами для выборки данных из БД?


 
Sergey13 ©   (2006-08-10 14:27) [1]

> [0] GEM   (10.08.06 14:19)
> Второй вопрос: есть ли более оптимизированный подход чем
> мой с запросами для выборки данных из БД?

Есть еще подход с оптимизированными запросами. Для этого сначала надо оптимизировать задачу в том плане, что не выбирать все что есть, а только то, что надо.


 
GEM   (2006-08-11 07:11) [2]

так я и выбираю только то, что указывает пользователь. В пределах 6000 записей в главной таблице работает все нормально, но мне необходимо обрабатывать все 300 000 записей, но здесь возникает вышеуказанная ошибка. Помогите, плз, ее обойти?


 
Sergey13 ©   (2006-08-11 08:19) [3]

> [2] GEM   (11.08.06 07:11)

1. Обрабатывать "все 300 000 записей" и показывать "все 300 000 записей" это разные вещи.
2. Оптимизировать запросы


 
Desdechado ©   (2006-08-11 11:06) [4]

а запрос каков?


 
Desdechado ©   (2006-08-11 11:06) [5]

подозреваю, у тебя декартово произведение получается


 
GEM   (2006-08-14 07:16) [6]

запросы образуются такого типа:
SELECT {поля, выбранные пользователем} FROM (главная INNERJOIN подчиненные ON главная.поле=подчиненные.поле
INNERJOIN-ов n-ое количество, взависимости от того, какие и сколько полей выбрано
При инициализации приложения заполняются Combobox-ы с помощью обычного запроса на выборку типа: SELECT DISTINCT поле FROM таблица, а некоторые наподобие запросом, но с WHERE - и уже при попытке забить Combobox-ы  данными приложение ругается, что некий временный файл is too large
Как можно запросы такого типа оптимизировать?


 
Mike Kouzmine ©   (2006-08-14 10:54) [7]

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


 
Desdechado ©   (2006-08-14 11:18) [8]

> INNERJOIN-ов n-ое количество, взависимости от того, какие
> и сколько полей выбрано
Вот здесь точномогут быть грабли. Проверь текст запроса. Похоже, что у тебя не наложено условие на соединение некоторых таблиц.

Mike Kouzmine ©   (14.08.06 10:54) [7]
> Во-первых какая база.
Да в [0] написано же "В базе FoxPro".


 
Mike Kouzmine ©   (2006-08-14 11:19) [9]

Desdechado ©   (14.08.06 11:18) [8] Прошу прощения. Не увидел


 
GEM   (2006-08-15 07:09) [10]

Пожалуйста помогите советом иль делом - очень нужно!


 
Anatoly Podgoretsky ©   (2006-08-15 08:41) [11]

Шестой день продолжался допрос партизана.


 
GEM   (2006-08-15 12:29) [12]


> Шестой день продолжался допрос партизана.

партизанов...
Все же, можно ли решить данную проблему или нет?

> Вот здесь точномогут быть грабли. Проверь текст запроса.
>  Похоже, что у тебя не наложено условие на соединение некоторых
> таблиц.

Однако ж, если главная таблица содержит менее 6000 записей (примерно), то никаких ошибок не выходит, как бы пользователь не извращался с выборкой. А тут даже при простейщем запросе типа SELECT DISTINCT поле FROM таблица WHERE поле=значение, уже ругается.


 
Lexiy   (2006-08-15 17:14) [13]

к чему столько усложни отсев :)
вывод на экран более шести тысяч.
Да пользователь одну восьмую то не прокрутит рука устанет :)


 
GEM   (2006-08-16 07:14) [14]


> Да пользователь одну восьмую то не прокрутит рука устанет
> :)

хотите сказать, что данный файл образуется при отображении данных, а не обработке? тогда как загружать частями данные в DBGrid?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.077 c
3-1151191604
antoxa2005
2006-06-25 03:26
2006.09.03
Подскажите, а как указывать путь с клиента к MySQL?


1-1153490037
BFG9k
2006-07-21 17:53
2006.09.03
Не удается активизировать XMLDocument


15-1154881418
Pazitron_Brain
2006-08-06 20:23
2006.09.03
Как определить положение абонента


15-1155119751
Карелин Артем
2006-08-09 14:35
2006.09.03
Будущее сайта


3-1151323751
Sirus
2006-06-26 16:09
2006.09.03
Прямой доступ к DBF файлам в Delphi 2006





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский