У меня есть график RDF в Oracle, который имеет ок. 7, 000, 000 троек (строк)Лучше «удалять строки из таблицы» производительность
У меня есть простой оператор выбора, который получает старые дубликаты (тройки) и удаляет их из этого графика RDF.
Теперь скажем мой ВЫБОР возвращает 300 результатов, это становится вычислительно очень дорого, так как DELETE делает полное сканирование таблицы TEST_tpl 300 раз и, как я сказал TEST_tpl имеет ок.
7, 000, 000 строк ...
DELETE FROM TEST_tpl t WHERE t.triple.get_subject()
IN
(
SELECT rdf$stc_sub from rdf_stage_table_TEST
WHERE rdf$stc_pred LIKE '%DateTime%'
)
Я пытаюсь найти способ создать процедуру оракула, что бы пройти через таблицу только один раз для нескольких значений ...
Или может быть кто-то знает лучший способ ...
Каково определение 'test_tpl'? Является ли 'тройной' тип объекта? Можете ли вы опубликовать план запроса? Вы уверены, что таблица test_tpl полностью сканируется 300 раз? Это возможно, но это будет очень странный план выбора оптимизатора, если у вас нет какой-то ужасной статистики. –
Почему бы вам просто не использовать тройной магазин? – Michael