Помогите советом, плз.

Ильдар
Дата: 06.03.2001 13:50:32
Помогите советом, плз.

есть 3 таблицы:
1. Предприятия (48 000 записей)
FinInstitute(IdFinInstitute int, ... )
2. Категории (26 записей)
FSCategory(IdFSCategory int, ...)
3. Данные предприятий по категориям (1 248 000 000 записей)
на каждое предприятие по 26 записей
FormSix(IdFormSix int, IdFinInstitute int, IdFSCategory int, Val_1 int, ... Val_19 int)

суть проблемы такая:
например запрос (см. ниже) выполняется за ~3 сек.

SELECT
fsc.IdFSCategory,
SUM(fs.Val_1) as Val_1
FROM FormSix fs, FSCategory fsc, FinInstitute fi
WHERE fs.IdFSCategory = fsc.IdFSCategory
AND fs.IdFinInstitute = fi.IdFinInstitute
AND fi.IdFinInstitute < 10000
GROUP BY fsc.IdFSCategory

но если в нем перечислить все поля (Val_1 - Val_19) (см. ниже),
то время выполнения возростает до 14-18 сек.

SELECT
fsc.IdFSCategory,
SUM(fs.Val_1) as Val_1,
SUM(fs.Val_2) as Val_2,
...
...
SUM(fs.Val_19) as Val_19
FROM FormSix fs, FSCategory fsc, FinInstitute fi
WHERE fs.IdFSCategory = fsc.IdFSCategory
AND fs.IdFinInstitute = fi.IdFinInstitute
AND fi.IdFinInstitute < 10000
GROUP BY fsc.IdFSCategory

почему так возрастает время выполнения,
можно ли это бороться?
(т.е. как сократить время выполнения, оптимизировать, ...)

С уважением, Ильдар.