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

Это иллюзия.

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

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

Это иллюзия.

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

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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
22.05.2006, 15:41
    #33742917
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Увелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II .
...
Рейтинг: 0 / 0
22.05.2006, 20:08
    #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
22.05.2006, 21:49
    #33743829
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Ping-vin PVPУвелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II .
Если этот ответ содержит иронию хочу сказать, что за каждим вопросом стоит чья-то проблема и не всегда приемлемо ничего не дающие ответы. А если серьезна спрашиваете, то все компьютеры P4, 2400 MHz.Прошу прощение за допущенную вольность в интонации. Речь шла действительно о технике.
...
Рейтинг: 0 / 0
22.05.2006, 21:51
    #33743834
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
PVPРечь шла действительно о технике.

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

Теперь ждем текст запросов, которые у вас тормозят.
...
Рейтинг: 0 / 0
23.05.2006, 07:02
    #33744045
mir
mir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Теперь вопрос. У вас из 10 таблиц только 4 имеют первичные ключи, а 6 -- без ключей. Вопрос не в том, кого именно вы, по вашим словам, слушались во всем при проектировании такой базы, а каковы же там должны быть ключи.
...
Рейтинг: 0 / 0
23.05.2006, 12:33
    #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
28.05.2006, 14:48
    #33756724
Ping-vin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Все слишком безнадежно, или почему остыл желание помочь?
...
Рейтинг: 0 / 0
29.05.2006, 09:28
    #33757356
Alexandr Kochmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Pv> Автор: Ping-vin
Pv> Все слишком безнадежно, или почему остыл желание помочь?

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


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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.05.2006, 09:43
    #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
29.05.2006, 11:50
    #33757722
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Ping-vinВсе слишком безнадежно, или почему остыл желание помочь?

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

Таблицы линкованные? На другом компьютере? Если да, проверяй сеть. Сожми базу. Накати все сервис паки для Jet и Access. И скажи какой версии у тебя Access?
...
Рейтинг: 0 / 0
29.05.2006, 16:07
    #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
29.05.2006, 17:32
    #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
29.05.2006, 19:40
    #33759180
Ping-vin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
IgorM визуально меньше секунды.я на две секунды согласен , буду искать причини дальше

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

Я думаю, основная причина - текстовые ключи.
...
Рейтинг: 0 / 0
30.05.2006, 14:45
    #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
03.06.2006, 16:48
    #33770552
Ping-vin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как улучшить скорость?
Проблема действительно идет от текстовых ключей.

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


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