powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Можно ли ускорить/избежать non-equi join?
7 сообщений из 7, страница 1 из 1
Можно ли ускорить/избежать non-equi join?
    #38657858
voldermar666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Проблема состоит в следующем:
Есть таблица, в которую сваливаются данные о действиях юзеров на сайте, в том числе IP. И вторая таблица соответствиями диапазонов IP адресов странам.
Задача: получить по ip из таблицы 1 страну пользователя из таблицы 2 (сджойнить).
Проблема: non-euqi join вида
join on (IP1 >= IP_BEGIN_RANGE and IP1 <=IP_END_RANGE) выполняется адски медленно, и при анализе плана выполнения запроса БД прямым текстом ругается на non-equi join и решает проблему перебором. DB SAP HANA.
Буду признателен за любые идеи как ее подстегнуть)
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38657870
lookat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
voldermar666,

На ум одно лишь приходит --
до загрузки в Хану (или при загрузке)
прописывать суррогатные ключи.
Тогда уже в Хане будет эквиджойн,
и включится колоночный движок.

Удачи
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38657932
voldermar666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lookat,

спасибо, а можно подробнее?
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38657949
lookat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
voldermar666,

Вы как данные в Хану грузите?
ETL или просто LOAD FROM 'FILE'?

По любому, добавьте в схему данных
(как в "источнике", так и в "приемнике")
поле 'country_id' (суррогатный ключ кода страны)
и заполняйте его -- либо ETL-job'ом, либо как-то еще --
чем Вы там генерите файлы для загрузки в Хану.

Lookup-таблицу с этими суррогатными ключами сделайте
из Вашей таблицы db-ip (или что Вы там используете).

Смысл этих действий прост: Ваш нон-эквиджойн
делается на этапе приготовления данных для загрузки,
а уже в Хане будете делать обычный (экви-)джойн
по 'country_id' с незамысловатой таблицой 'country'
(country_id int, country_name varchar(...))

Удачи
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38657995
voldermar666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lookat,

спасибо за совет, действительно на этапе загрузки возможны любые манипуляции,
но фишка в том, что все надо делать on-the-fly, а данные попадают в хану напрямую с сайта,
где происходят действия пользователя. Шлет это все javascript.
У меня была идея сделать джобу, которая делает этот non-equi join "в фоне",
наверное так и придется поступать...
еще идеи?)
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38658008
lookat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
voldermar666,

идей по поводу "что делать" больше нет.
только по поводу "когда, где и как делать".

если "на лету", то можете вычислять страну,
создав lookup array и выбирая из него яваскриптом.
таблица будет примерно строк на 200 тысяч (~10Mb).

ну и Ваш вариант "из Ханы в Хану" тоже годится.

Удачи
...
Рейтинг: 0 / 0
Можно ли ускорить/избежать non-equi join?
    #38658010
voldermar666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lookat,

Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Можно ли ускорить/избежать non-equi join?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]