|
|
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Дорогие друзья! Научите, как вы умудряетесь делать законченные проекты с базами данных. Во всем слушался вас при выборе стратегии построения базы и алгоритма программы. Результат шестимесячной работы, круглый ноль. Вот что произошло: со временем число записей дошло всего до 4500, а все работает уже так медленно, что продолжать не стоит. Там всего 5 полей. Потом проверил, не в запросе ли дело, но самый простой запрос SELECT * FROM ... выполняется за одну секунду, а с объединением двух или более таблиц, вообще кошмар. Потом проверил, не в базе ли дело, создал новую базу со столькими же записями. Результат тот же. Я представляю, и нечего там представлять, проверил, что происходит, когда 20000 или 80000 записей, плюс, если запрос понадобится с объединением двух или более таблиц. Мне твердили, что пока число записей до полмиллиона или даже больше, нечего опасаться. Существуют же базы данных в повседневной жизни. Как их умудряются делать. Или Access и Jet это самые паршивые вещи в этой области. Что тогда лучше брать, посоветуйте. Но “лучше” подразумевает, когда 5 или 10 раз быстрее, так как иначе я не знаю, как этой программой можно пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2006, 15:04 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Есть ли на поля FK индексы или Jet втупую занимается перебором записей с TABLE SCAN ? -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2006, 15:40 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ! Индексов признаюсь, нет. Обязательно займусь ими, параллельно прочту ветку, которую вы указали. Встречал аналогичную программу, как моя, с использованием Borland Database Engine, кто не будь, пользуется им? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2006, 15:52 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
поставил индекс на два поля (на primary стоят автоматический) эффекта вообще не ощутил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2006, 20:01 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Структуру таблички и запрос в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2006, 21:06 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Pv> Существуют же базы данных в повседневной Pv> жизни. Как их умудряются делать. Это иллюзия. -- С уважением Кочмин Александр Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 08:17 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Alexandr Kochmin Pv> Существуют же базы данных в повседневной Pv> жизни. Как их умудряются делать. Это иллюзия. -- С уважением Кочмин Александр Posted via ActualForum NNTP Server 1.3Извините, что иллюзия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 14:45 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Pv> Alexandr Kochmin Pv>> Существуют же базы данных в повседневной Pv>> жизни. Как их умудряются делать. Pv> Это иллюзия. Pv> Извините, что иллюзия? что существуют базы которые "Но "лучше" подразумевает, когда 5 или 10 раз быстрее," да шутка это :) А по существу - оптимизируй. Дюже у тебя заза неоптимизирована. Читай про индексы, оптимизицию, планы запросов, нормализацию и прочее... -- С уважением Кочмин Александр Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 15:09 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Увелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 15:41 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
PVPУвелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II . Если этот ответ содержит иронию хочу сказать, что за каждим вопросом стоит чья-то проблема и не всегда приемлемо ничего не дающие ответы. А если серьезна спрашиваете, то все компьютеры P4, 2400 MHz. В вопросе с самого начала было подчеркнуто что база не такая сложная и по-моему очень маленькая для того чтобы так медленно работала. Спасибо Alexandr Kochmin все вами перечисленное, я обязательно учту, хотя не думаю что, все сказанное игнорировано у меня. Здесь находится структура базы, реальная база чуть-чуть отличается. Пример привел, для того чтобы подчеркнуть, что она не сложная. Ведущая таблица Docs для каждой операции имеется DocID DocID присутствует в таблице History, где находится все содержимое, всех операции. Таблица History в свою очередь имеет ID которое, по полям HistoryID в вспомогательных таблицах связан с дополнительной информацией к записи. Что с чем связано видно из Relationships которое составлено только для наглядности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 20:08 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Ping-vin PVPУвелить скорость можно путем увеличения объема памяти компьютера, например, из 128 М до 256 М, и заменой процессора, например 486 AT на Pentium II . Если этот ответ содержит иронию хочу сказать, что за каждим вопросом стоит чья-то проблема и не всегда приемлемо ничего не дающие ответы. А если серьезна спрашиваете, то все компьютеры P4, 2400 MHz.Прошу прощение за допущенную вольность в интонации. Речь шла действительно о технике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 21:49 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
PVPРечь шла действительно о технике. это очевидно экстенсивный путь, если только не исчерпаны все возможности оптимизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 21:51 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
2 Ping-vin Выполняю часть работы за вас, а именно -- привожу вашу схему, выдранную из mdb-файла. Правда там не видно типов данных, что не облегчает понимание, и, конечно, названия полей и таблиц тоже понимание не облегчают. Теперь ждем текст запросов, которые у вас тормозят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 06:56 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Теперь вопрос. У вас из 10 таблиц только 4 имеют первичные ключи, а 6 -- без ключей. Вопрос не в том, кого именно вы, по вашим словам, слушались во всем при проектировании такой базы, а каковы же там должны быть ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 07:02 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо mir Я ни как не смог так вставить Screenshot в вопрос. Уже всем спасибо, что столько времени потеряли. Извиняюсь, все таблицы содержат первичные ключи? такими являются первые поля, в каждой таблице, на рисунке. Запросов Канешно много, но приведу два из них. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:33 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Все слишком безнадежно, или почему остыл желание помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2006, 14:48 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Pv> Автор: Ping-vin Pv> Все слишком безнадежно, или почему остыл желание помочь? тебе уже все сказали по этой теме, а ты читать и думать не хочешь, а ждешь, когда же будет "такой компонент, который на форму положил, и все быстро заработало". Здесь рыбы нет. -- С уважением Кочмин Александр Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 09:28 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 09:43 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Ping-vinВсе слишком безнадежно, или почему остыл желание помочь? Если Access на P4, 2400 выбирает 4500 записей из таблице за секунду, то тут запросами ничего не исправить. Для теста, добавил 50000 записей в Docs из Example_1.mdb - никаких тормозов. Таблицы линкованные? На другом компьютере? Если да, проверяй сеть. Сожми базу. Накати все сервис паки для Jet и Access. И скажи какой версии у тебя Access? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 11:50 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
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. сервис паки не стоят, спасибо, посмотрю в эту сторону. Что касается индексов, о которых было сказано выше, если посмотрите глазами неопытного человека, нормальных методологии по их использованию, очень трудно найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 16:07 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 17:32 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
IgorM визуально меньше секунды.я на две секунды согласен , буду искать причини дальше IgorMКстати, рекомендую избегать использования текстовых полей как ключевых и связей таблиц по ним, на более-менее сложных и объемных запросах это тормоза default.Учту обязательно, если не придется очень многое переделать, по-моему, не придется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 19:40 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Ping-vin IgorM визуально меньше секунды.я на две секунды согласен , буду искать причини дальше Я думаю, основная причина - текстовые ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2006, 09:29 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Ping-vinЯ проверял для 20000 и 80000 записей. Первый запрос 4 сек на 20000 записей. как раз под рукой оказался Access 2k и P4-2400/256 с джойнами делать поленился, если выразите интерес - сделаю залил таблицу archiv. Полей там штук 15, 1 168 026 записей, индексов не создавал, вес db1.mdb 190Mb. Запрос Код: plaintext 1. боюсь, у Вас все же проблемы с сетью или ПК помимо БД, с которой, очевидно тоже не все в порядке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2006, 14:45 |
|
||
|
Как улучшить скорость?
|
|||
|---|---|---|---|
|
#18+
Проблема действительно идет от текстовых ключей. В этом плане у меня такая проблема. В основном в выборках доминируют поля Goods.f1 и Docs.docsID они и являются текстовыми. Обязательно нужно чтобы содержимое этих полей вводил пользователь, а программа следит за их уникальностью. А пользователь вводит как раз текстовые идентификаторы. Вот, нужен ваш совет, как поступить? Добавить авто счетчики как-то рука не поворачивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2006, 16:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33742817&tid=1545219]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 544ms |

| 0 / 0 |
