Есть две таблицы:
- объекты (имя-guid, type, label, данные в blob xml-ке);
- линки (type, src-guid, dst-guid).
Объекты хранятся все вместе, а связи между ними хранятся в отдельной таблице.
Нужно построить сложный отчет по нескольким типам. Он получается через join-ы (по два на каждый тип).
Живой пример. Есть объекты: человек, карта, выдача (связка человек-карта).
Выбрать все выдачи с человеком и картой:
Код: Выделить всё
select
o1.flabel as issue,
o2.flabel as owner,
o3.flabel as card
from
tobjectstorage o1
left join tlinkstorage ls2 on (ls2.ftype='LUserIssue' and ls2.fdestobject=o1.fname) left join tobjectstorage o2 on (ls2.fsrcobject=o2.fname)
left join tlinkstorage ls3 on (ls3.ftype='LIssueToCard' and ls3.fsrcobject=o1.fname) left join tobjectstorage o3 on (ls3.fdestobject=o3.fname)
where
o1.ftypename='TCardIssue'Тест: 25 тысяч объектов нужного типа (всего их под 100 тысяч), пытаюсь выбрать по 1000 за раз. Т.е. к select'у приписывается rows 1 to 1000 (1000 to 2000 и т.д.).
Использую isql.
Такое ощущение, что при возрастании интервала возрастает время выборки (как будто происходит fetch всех предыдущих записей).
Что я делаю не так?