У вас указан странный пример запроса, который никак не соответствует заявленному в начале OLAP сценарию использования select * from T1 inner join T2 on T1.a = T2.a И неэффективный при большом размере T2 план его выполнения. Разработчик, в условиях возможности использовать дополнительную память, и больших размерах T2 вероятно реализовал бы hash join, что-то вроде
indexed := hashMapByColumn(T2, 'a')
for (row1 : T1)
for (row2: indexed[row1.a])
output(row1, row2)
Вероятно у вас просто неудачный пример. Было бы интересно узнать какие варинты выполнения join кроме nested loop умеет выполнять ваша система, и на основе каких критериев выбирается тот или иной вариант выполнения. Также интересно было бы узнать сравнение скорости с другими решениями - dbms для olap (clickhouse, hp vertica, ...), серверами olap(Mondrian, ...). Если ваше решение оказывается быстрее, была бы интересна аналитика того на каких сценариях и за счёт каких факторов.
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
У вас указан странный пример запроса, который никак не соответствует заявленному в начале OLAP сценарию использования
select * from T1 inner join T2 on T1.a = T2.a
И неэффективный при большом размере T2 план его выполнения. Разработчик, в условиях возможности использовать дополнительную память, и больших размерах T2 вероятно реализовал бы hash join, что-то вроде
Вероятно у вас просто неудачный пример. Было бы интересно узнать какие варинты выполнения join кроме nested loop умеет выполнять ваша система, и на основе каких критериев выбирается тот или иной вариант выполнения.
Также интересно было бы узнать сравнение скорости с другими решениями - dbms для olap (clickhouse, hp vertica, ...), серверами olap(Mondrian, ...). Если ваше решение оказывается быстрее, была бы интересна аналитика того на каких сценариях и за счёт каких факторов.