Чтобы получить первые N объектов в результатах запроса - PullRequest
0 голосов
/ 08 июля 2011

Я использую Documentum Developer Edition 6.6.Мне нужно (используя DFS) выполнить следующее выражение DQL

, выбрать "r_version_label", "i_chronicle_id", "i_position", "r_modify_date", "subject", "title", "r_object_type", "object_name", "r_object_id" из "dm_document", где FOLDER (ID ('0cde75d180000107')) и "r_object_type" = 'dm_document' в порядке "r_modify_date" asc, "i_position" desc

Но мне нужны только первые N изобъекты, которые возвращает Select.Я повторяю: N объектов, а не строк (это важно, потому что r_version_label в результирующих атрибутах является повторяемым полем).

Я попытался сделать это, используя следующий DQL: выберите «r_version_label», «i_chronicle_id»,«i_position», «r_modify_date», «subject», «title», «r_object_type», «object_name», «r_object_id» из «dm_document», где FOLDER (ID («0cde75d1800007»)) и «r_object_type" = 'dm_document'by "r_modify_date" asc, "i_position" desc ENABLE (OPTIMIZE_TOP, RETURN_TOP)

Но я видел: возвращенными были строки, а не объекты.Это потому, что мой Сервер Documentum имеет параметр по умолчанию return_top_results_row_based (= true).Изменение параметра в server.ini для меня неприемлемо - мне нужно написать приложение, которое будет работать одинаково, независимо от того, что будет return_top_results_row_based.

Я пробовал RETURN_RANGE, SQL_DEF_RESULT_SET и FETCH_ALL_RESULTS вместо RETURN_TOP- но их N тоже строки.

Итак, теперь я вижу единственный способ сделать это.Я буду использовать следующий DQL: выберите «r_version_label», «i_chronicle_id», «i_position», «r_modify_date», «subject», «title», «r_object_type», «object_name», «r_object_id» из «dm_document», где FOLDER (ID ('0cde75d180000107')) и "r_object_type" = "dm_document" в порядке "r_modify_date" asc, "i_position" desc ENABLE (OPTIMIZE_TOP, RETURN_TOP)

И при обработке результата мое приложение будет использовать только первое Nиз возвращенных предметов.Надеюсь, что «OPTIMIZE_TOP» сократит время на чтение объектов, которые я не буду использовать.Моя СУБД - MSSQL, а в справочнике по DQL сказано, что «OPTIMIZE_TOP» действительно влияет на MSSQL.

Может быть, кто-то может предложить лучшее решение?

1 Ответ

0 голосов
/ 13 июля 2011

Попробуйте этот запрос:

выберите «r_object_id», «r_version_label», «i_chronicle_id», «i_position», «r_modify_date», «subject», «title», «r_object_type», «object_name», «r_object_id "из" dm_document ", где FOLDER (ID ('0cde75d180000107')) и" r_object_type "= 'dm_document' упорядочены по" r_object_id "," r_modify_date "asc," i_position "desc

* 100_ * вынуждают r_id_id указывать на порядок заказаdql для объединения строк в объекты в результирующем наборе. Хотя я не знаю, как он взаимодействует с OPTIMIZE / RETURN_TOP.
...