|
|
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Добрый год. Есть в наличии: Таблицы: MAIN( id integer, /*Primary Key*/ info varchar(16), /*индексировано*/ .... ) RES( id integer, /*Primary Key*/ main_id integer, /*внешний ключ к MAIN.ID*/ summa, val1 integer, val2 integer, ... ) declare variable v_info varchar(16) в блоке FOR SELECT .... form MAIN m INTO :v_info DO выполняется запрос вида: select count(r1.id), sum(r1.summa) from RES r1,m1 where m1.id=r1.main_id and m1.info=:v_info and r1.val1=0 and r1.val2=1 into :SUM01 Собственно вопрос: выборка получается ну ооочень длительной, основные расходы получаются, насколько японимаю, из-за связки m1.id=r1.main_id and m1.info=:v_info 1. Намного ли ускорится, если добавить в подчинённую таблицу RES поле info (равное полю родительской записи, соответственно) ? 2. могу ли в приведенном примере вместо m1.info=:v_info писать m1.info=m.info ? 3. какие ещё возможные варианты? PS. заменить тип поля info на числовое или использовать другое поле для группировки - не подходит. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 10:38:07 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Потому, что запрос кривой - с закидыванием правой ноги через левое плечо и кувырком через голову. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 10:51:25 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
>Zmeishe наверно, не полный вопрос получился. Уточняю :) Таблицы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. при этом для всех подчинённых соблюдается RES.val1=MAIN.val1, RES.val2=MAIN.val2, а вот поля info и mval1 - только в таблице MAIN поля rval1,rval2 - только в RES параметры процедуры: PARAM1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. и параметр процедуры, присутствующий только в MAIN но пока писал это всё, возникла мысль что даже при такой постановке вариант, предложенный Zmeishe может подойти. подскажите, плиз. PS. Допустим вариант с дублированием полей MAIN.mval1 и MAIN.info в подчинённой таблице. Ваше мнение? спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 11:28:28 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
уточнение: в запросе читать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 11:30:45 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
нет, судя по всему вариант Zmeishe не подходит из-за группировки. Подскажите плиз, имеет ли смысл дублирование полей в подчинённой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 12:37:44 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
TonnyПодскажите плиз, имеет ли смысл дублирование полей в подчинённой таблице? зачем??? для упрощения написания запросов??? тогда может и справочные таблицы в болото выкинуть, чтобы с ссылочной целостностью не возиться??? ИМХО создавать в таблице 2 поля с идентичной информацией не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 12:50:46 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
VFзачем??? для упрощения написания запросов??? тогда может и справочные таблицы в болото выкинуть, чтобы с ссылочной целостностью не возиться??? ИМХО создавать в таблице 2 поля с идентичной информацией не надо... нет, для Ускорения выборки. Требование такое: создать бумажный отчёт на основе таблицы MAIN (125 тыс записей) и RES (процентов нв 20 больше) сгруппировав по приведенным полям. Результат - около 18-40 тыс записей (в зависимости от условий). Это всё печатается на бумаге :) требуется максимально минимизировать время генерации отчёта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 12:59:03 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Я не пойму, какие тут проблемы с группировкой? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 13:34:37 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Tonnyнет, для Ускорения выборки. поясни, как может ускорить выборку увеличение кол-ва полей??? да и есть уже в этой таблице поле с такими данными, зачем дублировать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 13:48:12 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
ZmeisheЯ не пойму, какие тут проблемы с группировкой? прошу посмотреть пост 765124, я там уточнил задачу. FOR...SELECT идёт по таблице MAIN, а между DO BEGIN...END одна из выборок (а точнее 3 из 6ти) идут по таблице RES ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 14:11:51 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Так что, никто не подскажет? ответте, плиз - не хочу без "авторитетного" мнения базу курочать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2004, 16:06:17 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
автор Результат - около 18-40 тыс записей (в зависимости от условий). Это всё печатается на бумаге :) требуется максимально минимизировать время генерации отчёта. Если это все печатается на бумаге, то незачем ускорять - печать все равно будет доооолгой. авторПодскажите плиз, имеет ли смысл дублирование полей в подчинённой таблице? нет, не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2004, 21:14:47 |
|
||
|
Оптимизация по скорости добавлением поля?
|
|||
|---|---|---|---|
|
#18+
Добавил поля в подчинённую таблицу. Формирование всех отчётов - аналогичное, 6 подзапросов с функциями Count(),Sum() на каждую строку выборки, 3 из них - по условию, в котором участвует родительское поле. Результат 1: По одному из отчётов время формирования: было: 2 мин 30 сек стало: 9 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 10:18:57 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32576823&tid=1578347]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 391ms |

| 0 / 0 |
