Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос взаимодействия БС++Б и SybaseSQLAnyware

28K
31 октября 2007 года
Ярый
9 / / 23.08.2007
При проектировании БД и обращении к неи из проги возникла проблема. Опишу по порядку.

Дано:
БД с двумя таблицами А и В связи по ключу между ними нет. И в А и в В есть поле "зю" (ID номер). А является базой известных мне "зю", т.е. содержит "зю" и необходимые аттрибуты. В - набор всяких разных "зю" и параметров появления их в В. А содержит 3201 запись, В 56045 записей.

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

Мое решение:
Пишу прогу в С++Builder, подсоединяюсь к БД через ADOQuery.
Создал VIEW следующего содержания:


 
Код:
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


Посе чего обращаюсь просто
 
Код:
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 быстрее работать будет?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог