powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как улучшить скорость?
25 сообщений из 33, страница 1 из 2
Как улучшить скорость?
    #33741020
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дорогие друзья!
Научите, как вы умудряетесь делать законченные проекты с базами данных.
Во всем слушался вас при выборе стратегии построения базы и алгоритма программы.
Результат шестимесячной работы, круглый ноль.
Вот что произошло: со временем число записей дошло всего до 4500, а все работает уже так медленно, что продолжать не стоит. Там всего 5 полей.
Потом проверил, не в запросе ли дело, но самый простой запрос SELECT * FROM ... выполняется за одну секунду, а с объединением двух или более таблиц, вообще кошмар.
Потом проверил, не в базе ли дело, создал новую базу со столькими же записями. Результат тот же. Я представляю, и нечего там представлять, проверил, что происходит, когда 20000 или 80000 записей, плюс, если запрос понадобится с объединением двух или более таблиц. Мне твердили, что пока число записей до полмиллиона или даже больше, нечего опасаться.
Существуют же базы данных в повседневной жизни. Как их умудряются делать. Или Access и Jet это самые паршивые вещи в этой области. Что тогда лучше брать, посоветуйте. Но “лучше” подразумевает, когда 5 или 10 раз быстрее, так как иначе я не знаю, как этой программой можно пользоваться.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33741041
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли на поля FK индексы или Jet втупую занимается перебором записей с TABLE SCAN ?
--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33741048
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!
Индексов признаюсь, нет. Обязательно займусь ими, параллельно прочту ветку, которую вы указали.
Встречал аналогичную программу, как моя, с использованием Borland Database Engine, кто не будь, пользуется им?
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33741220
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поставил индекс на два поля (на primary стоят автоматический)
эффекта вообще не ощутил.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33741295
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структуру таблички и запрос в студию.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33741556
Alexandr Kochmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pv> Существуют же базы данных в повседневной
Pv> жизни. Как их умудряются делать.

Это иллюзия.

--
С уважением
Кочмин Александр

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33742771
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexandr Kochmin
Pv> Существуют же базы данных в повседневной
Pv> жизни. Как их умудряются делать.

Это иллюзия.

--
С уважением
Кочмин Александр

Posted via ActualForum NNTP Server 1.3Извините, что иллюзия?
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33742817
Alexandr Kochmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pv> Alexandr Kochmin

Pv>> Существуют же базы данных в повседневной
Pv>> жизни. Как их умудряются делать.

Pv> Это иллюзия.

Pv> Извините, что иллюзия?

что существуют базы которые "Но "лучше" подразумевает, когда 5 или 10 раз быстрее,"
да шутка это :)
А по существу - оптимизируй. Дюже у тебя заза неоптимизирована.
Читай про индексы, оптимизицию, планы запросов, нормализацию и прочее...

--
С уважением
Кочмин Александр

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33742917
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II .
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33743735
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVPУвелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II .
Если этот ответ содержит иронию хочу сказать, что за каждим вопросом стоит чья-то проблема и не всегда приемлемо ничего не дающие ответы. А если серьезна спрашиваете, то все компьютеры P4, 2400 MHz.
В вопросе с самого начала было подчеркнуто что база не такая сложная и по-моему очень маленькая для того чтобы так медленно работала.

Спасибо Alexandr Kochmin все вами перечисленное, я обязательно учту, хотя не думаю что, все сказанное игнорировано у меня.
Здесь находится структура базы, реальная база чуть-чуть отличается. Пример привел, для того чтобы подчеркнуть, что она не сложная.
Ведущая таблица Docs для каждой операции имеется DocID
DocID присутствует в таблице History, где находится все содержимое, всех операции.
Таблица History в свою очередь имеет ID которое, по полям HistoryID в вспомогательных таблицах связан с дополнительной информацией к записи.
Что с чем связано видно из Relationships которое составлено только для наглядности.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33743829
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vin PVPУвелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II .
Если этот ответ содержит иронию хочу сказать, что за каждим вопросом стоит чья-то проблема и не всегда приемлемо ничего не дающие ответы. А если серьезна спрашиваете, то все компьютеры P4, 2400 MHz.Прошу прощение за допущенную вольность в интонации. Речь шла действительно о технике.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33743834
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPРечь шла действительно о технике.

это очевидно экстенсивный путь, если только не исчерпаны все возможности оптимизации
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33744043
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ping-vin
Выполняю часть работы за вас, а именно -- привожу вашу схему, выдранную из mdb-файла. Правда там не видно типов данных, что не облегчает понимание, и, конечно, названия полей и таблиц тоже понимание не облегчают.

Теперь ждем текст запросов, которые у вас тормозят.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33744045
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь вопрос. У вас из 10 таблиц только 4 имеют первичные ключи, а 6 -- без ключей. Вопрос не в том, кого именно вы, по вашим словам, слушались во всем при проектировании такой базы, а каковы же там должны быть ключи.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33744967
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо mir
Я ни как не смог так вставить Screenshot в вопрос.

Уже всем спасибо, что столько времени потеряли.

Извиняюсь, все таблицы содержат первичные ключи? такими являются первые поля, в каждой таблице, на рисунке.

Запросов Канешно много, но приведу два из них.

Код: plaintext
1.
2.
SELECT * FROM  history as H inner join Docs as D on H.docID=D.docID 
WHERE SourceID = '" & Условие & "' and docdate <= " & Условие & "  
ORDER BY  goodsID, docdate

Код: plaintext
1.
2.
3.
4.
SELECT goodsID, SUM(iif(operationID='Поставка',amount,-amount)) FROM 
 (SELECT * FROM  history as H inner join Docs as D on H.docID=D.docID 
WHERE SourceID = '" & Условие & "' and docdate <=" & Условие & "  
ORDER BY  goodsID, docdate) 
group by goodsID
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33756724
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все слишком безнадежно, или почему остыл желание помочь?
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33757356
Alexandr Kochmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pv> Автор: Ping-vin
Pv> Все слишком безнадежно, или почему остыл желание помочь?

тебе уже все сказали по этой теме, а ты читать и думать не хочешь, а ждешь, когда же будет "такой компонент, который на форму положил, и все быстро заработало".
Здесь рыбы нет.


--
С уважением
Кочмин Александр

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33757383
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.замени OperationID на 1,-1 и делай SUM(amount*OperationID)
2. Исключи запросы select * from, поля перечисли (select * from a inner join b ..., догадываюсь что возможно и больше есть..).
3. По возможности исключи вложенные запросы. Во втором примере непонятно зачем он нужен такой.
SELECT h.goodsID, SUM(d.operationID*h.amount) FROM
history as H inner join Docs as D on H.docID=D.docID
WHERE d.SourceID = '" & Условие & "' and d.docdate <=" & Условие & "
group by h.goodsID
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33757722
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vinВсе слишком безнадежно, или почему остыл желание помочь?

Если Access на P4, 2400 выбирает 4500 записей из таблице за секунду, то тут запросами ничего не исправить. Для теста, добавил 50000 записей в Docs из Example_1.mdb - никаких тормозов.

Таблицы линкованные? На другом компьютере? Если да, проверяй сеть. Сожми базу. Накати все сервис паки для Jet и Access. И скажи какой версии у тебя Access?
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33758604
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexandr Kochmin
Pv> Автор: Ping-vin
Pv> Все слишком безнадежно, или почему остыл желание помочь?
тебе уже все сказали по этой теме, а ты читать и думать не хочешь, а ждешь, когда же будет "такой компонент, который на форму положил, и все быстро заработало".
Здесь рыбы нет.
--
С уважением
Кочмин Александр

Posted via ActualForum NNTP Server 1.3-Ошибаешься.

iscrafm 1.замени OperationID на 1,-1 и делай SUM(amount*OperationID)
2. Исключи запросы select * from, поля перечисли (select * from a inner join b ..., догадываюсь что возможно и больше есть..).
3. По возможности исключи вложенные запросы. Во втором примере непонятно зачем он нужен такой.
SELECT h.goodsID, SUM(d.operationID*h.amount) FROM
history as H inner join Docs as D on H.docID=D.docID
WHERE d.SourceID = '" & Условие & "' and d.docdate <=" & Условие & "
group by h.goodsID1. OperationID заменить вряд ли смогу, я привел пример для одного условия OperationID, а реально их много (перемещение, реализация и т.д.)
2. В основном так и делаю, но после многочисленных экспериментов это работало бистрее всех.
3. Там вложенный запрос присутствует потому, что в реальной работе происходит выборка двух полей из Docs
Спасибо за ответ!

IgorMЕсли Access на P4, 2400 выбирает 4500 записей из таблице за секунду, то тут запросами ничего не исправить. Для теста, добавил 50000 записей в Docs из Example_1.mdb - никаких тормозов.

Таблицы линкованные? На другом компьютере? Если да, проверяй сеть. Сожми базу. Накати все сервис паки для Jet и Access. И скажи какой версии у тебя Access?Будьте добры, за какое время выбирает у вас первый запрос из 50000.
Я проверял для 20000 и 80000 записей. Первый запрос 4 сек на 20000 записей.

Access 2000. сервис паки не стоят, спасибо, посмотрю в эту сторону.

Что касается индексов, о которых было сказано выше, если посмотрите глазами неопытного человека, нормальных методологии по их использованию, очень трудно найти.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33758898
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vin
IgorMЕсли Access на P4, 2400 выбирает 4500 записей из таблице за секунду, то тут запросами ничего не исправить. Для теста, добавил 50000 записей в Docs из Example_1.mdb - никаких тормозов.

Таблицы линкованные? На другом компьютере? Если да, проверяй сеть. Сожми базу. Накати все сервис паки для Jet и Access. И скажи какой версии у тебя Access?Будьте добры, за какое время выбирает у вас первый запрос из 50000.
Я проверял для 20000 и 80000 записей. Первый запрос 4 сек на 20000 записей.

32000 и 65000 (A'2003, 2000 нет) - визуально меньше секунды. Кстати, рекомендую избегать использования текстовых полей как ключевых и связей таблиц по ним, на более-менее сложных и объемных запросах это тормоза default.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33759180
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorM визуально меньше секунды.я на две секунды согласен , буду искать причини дальше

IgorMКстати, рекомендую избегать использования текстовых полей как ключевых и связей таблиц по ним, на более-менее сложных и объемных запросах это тормоза default.Учту обязательно, если не придется очень многое переделать, по-моему, не придется
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33759631
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vin IgorM визуально меньше секунды.я на две секунды согласен , буду искать причини дальше

Я думаю, основная причина - текстовые ключи.
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33760858
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vinЯ проверял для 20000 и 80000 записей. Первый запрос 4 сек на 20000 записей.


как раз под рукой оказался Access 2k и P4-2400/256

с джойнами делать поленился, если выразите интерес - сделаю

залил таблицу archiv. Полей там штук 15, 1 168 026 записей, индексов не создавал, вес db1.mdb 190Mb.

Запрос
Код: plaintext
1.
select * from archiv
where id_node =  581 
вернул 4 615 записей за 9 сек.

боюсь, у Вас все же проблемы с сетью или ПК помимо БД, с которой, очевидно тоже не все в порядке...
...
Рейтинг: 0 / 0
Как улучшить скорость?
    #33770552
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема действительно идет от текстовых ключей.

В этом плане у меня такая проблема.
В основном в выборках доминируют поля Goods.f1 и Docs.docsID
они и являются текстовыми.
Обязательно нужно чтобы содержимое этих полей вводил пользователь, а программа следит за их уникальностью. А пользователь вводит как раз текстовые идентификаторы.
Вот, нужен ваш совет, как поступить? Добавить авто счетчики как-то рука не поворачивается.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как улучшить скорость?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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