CREATE VIEW SvodTab as
SELECT A.zy, A.atr1, A.atr2, A.atr3, B.param1, B.param2, B.param3
FROM A right outer join B
ON A.zy=B.zy
Вопрос взаимодействия БС++Б и SybaseSQLAnyware
Дано:
БД с двумя таблицами А и В связи по ключу между ними нет. И в А и в В есть поле "зю" (ID номер). А является базой известных мне "зю", т.е. содержит "зю" и необходимые аттрибуты. В - набор всяких разных "зю" и параметров появления их в В. А содержит 3201 запись, В 56045 записей.
Задача:
Нужно отобразить сводную таблицу в которой каждому В-"зю" бы поставен в соответствие А-"зю" с аттрибутами, если он конечно в А вообще существует. Делается это для того чтоб знать какая В"зю" есть в базе А, а какой нет и если есть, то какие аттрибуты из аА ей соответствуют.
Мое решение:
Пишу прогу в С++Builder, подсоединяюсь к БД через ADOQuery.
Создал VIEW следующего содержания:
Код:
Посе чего обращаюсь просто
Код:
ADOQuery1->SQL->Add("SELECT * FROM SvodTab");
Проблема:
Низкое быстородействие!!!:mad:
SELECT * FROM SvodTab выполняется примерно 2.5 минуты! Пробовал деать не через VIEW, а просто запросом - результат тотже.
Замечания:
1. Во время выпонения выборки загрузка ЦП на превышает 1-3% :confused: . С опративкой тоже.
2. Прбовал индексировать поля "зю" в А и В - время выпонения сократилось на 10 сек. И всё :mad: !
3. Во встоенном в Sybase SQL процессоре запрос выполняется за 1.5 минуты.
Предпоожения:
Может ADO и Sybase изначально хреново быстродействуют?
Если создать БД средствами InterBase быстрее работать будет?