Я работаю с двумя очень большими таблицами (A - ~ 20E6 строк, B - ~ 65E3 строк), и у меня есть очень подробные предложения где получить только те элементы, которые мне нужны.Одна вещь, которая может ускорить его, - это сначала оценить дату создания записи (информация возвращается более 10 лет, нужно только последние 3 года);это исключит большую часть данных перед выполнением дорогостоящей обработки строк.Есть ли способ заставить WHERE date > cutoff_date
выполнить оценку перед другими предложениями?
Вот как выглядит мой запрос.
SELECT A.C1, A.C2,
SUM(CASE WHEN B.C1 = '[condition 1]' OR ... [condition n] THEN 1 ELSE NULL END)
AS SUM_OF_B_C1, ... [other sums]
FROM DB.TABLE_A A LEFT JOIN DB.TABLE_B AS B ON B.COMMON_COL = A.COMMON_COL
WHERE B.DATE > DATE('[cutoff date]')
AND [complex substr conditions]
AND NOT [other complex string conditions]
GROUP BY A.C1, A.C2
Одна проблема в том, что я толькоесть разрешение на чтение для БД.Просматривая Центр управления, кажется, что ни в одной из таблиц A или B нет индекса, поэтому маршрут оптимизации отсутствует.
Любая помощь, которую вы могли бы оказать, была бы полезной;мои небольшие тестовые запросы занимают около 5 минут, а в запросах продукта они будут примерно в 20 раз больше.