Итак, вот в чем дело, у меня есть две таблицы, каждая из которых имеет ~ 1B строк. Я пытаюсь запросить таблицы, чтобы я мог обработать данные и вставить их в другие таблицы. Но мне не нужно обрабатывать все ~ 1B. Мне нужно только 10 или 100 строк для работы с каждым разом.
Однако объединение и фильтрация требуют много времени для возврата данных.
У таблиц нет некластеризованных индексов, но у них есть кластеризованный индекс по первичному ключу.
Пример запроса:
select Col1, Col2, Col3
from 1b_table_1 t1
inner join (
select *
from 1b_table_2
where expression=condition
) t2
on t1.join_col = t2.join_col
where CAST(t2.timestamp as date) >= date_var1
and CAST(t2.timestamp as date) <= date_var2
ОБНОВЛЕНИЕ Я попытался добавить некластеризованный индекс на 1b_table_1, но проблема, с которой я столкнулся сейчас, заключается в том, что в другом месте выполняется скрипт, который непрерывно вставляет данные в эти две таблицы, и я не могу создать новый индекс или он заблокирует таблицу при построении индекса, и запись данных начнет сбоить и приведет к потере данных.
ДРУГОЙ ОДИН
SELECT count(*) from 1b_table_1
~ 1.2B
SELECT count(*) from 1b_table_2
~ 22M
SELECT count(*) from 1_table_2 where col like condition_string
БЫЛ РАБОТАЕТ НАД БОЛЕЕ 5 минут и безрезультатно. Здесь столбец nvarchar (max) !!
Кроме того, я не могу изменить структуру таблицы или индексы в таблице.