SELECT
a.id,
b.url as codingurl
FROM fact_A a
INNER JOIN dim_B b
ON strpos(a.url,b.url)> 0
- Записи графа в Fact_A: 2 миллиона
- отчеты графа в Dim_B: 1500
- Время, затраченное на выполнение: 10 минут
- Нет Узлов: 2
Может ли кто-нибудь помочь мне с пониманием того, почему вышеуказанный запрос занимает больше времени для выполнения?Redshift - Запрос проблемы производительности
Мы объявили ключ распределения в Fact_A для надлежащего распределения записей равномерно в обоих узлах, а также Ключ сортировки создается по URL-адресу в Fact_A.
Таблица Dim_B создана с использованием DISTRIBUTION ALL
.
Вы можете дать больше информации, в частности, какие узлы вы используете, сколько узлов в вашем кластере и схеме таблиц A и B –
Что вы подразумеваете под термином «почему вышеупомянутый запрос занимает больше времени для выполнения»? Больше времени, чем что? Или вы просто говорите, что хотите быстрее? Помните, что нужно выполнить 3-миллиардные сравнения строк, а 'strpos' не является эффективным способом объединения таблиц по сравнению с обычными сравнениями (например, = <, > =). –
Можете ли вы предоставить некоторые образцы значений для 'a.url' и' b.url', которые используются с 'strpos'? Возможно, более эффективный способ выполнить запрос. –