Я некоторое время пытался вытянуть данные через связанный сервер в SSMS из базы данных InterSystem Cache, чтобы мы могли объединить данные с другими исходными системами в нашем хранилище данных.
Я установил соединение ODBC и связанный сервер с базой данных и могу выполнять запросы через OPENQUERY в Management studio, но объем данных велик (> 100 миллионов строк). Поэтому, когда я выполняю SQL-запрос с предложением WHERE, запрос просто вращается. Как будто нет индексов или PK, и запрос завершает масштабное сканирование таблиц.
Если я ВЫБИРАЮ ТОП-100 без условия where, запрос возвращает данные, поэтому я знаю, что все соединения правильные. Любое руководство будет с благодарностью!
Я также пытался использовать SSIS, используя поток данных от соединения ODBC к месту назначения OLE DB, но я отменил пакет через семь часов.
Пример запроса ниже:
SELECT *
FROM OPENQUERY (InterSystem_Cache ,
'SELECT pt.Column1,
pt.Column2,
pt.Column3,
pt.Column4,
pt.Column5,
pt.Column6,
pt.Column7,
pt.Column8,
pt.Column9,
pt.Column10,
pt.Column11,
tr.Column12,
tr.Column13,
tr.Column14,
te.Column15,
te.Column16,
te.Column17,
te.Column18,
te.Column19,
te.Column20,
rs.Column21,
rs.Column22,
rs.Column23,
re.Column24,
re.Column25,
re.Column26,
tr.Column27,
tr.Column28,
re.Column29
FROM Database1.Table1 tr
LEFT JOIN Database1.Table2 te on te.Column16 = tr.Column13
LEFT JOIN Database1.Table3 rs on rs.Column23 = tr.Column28
LEFT JOIN Database1.Table4 re on re.Column25 = rs.Column22
LEFT JOIN Database1.Table5 pt on pt.Column6 = re.Column26
WHERE tr.Column12 = ''2018-10-30'' ')