Гость
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Можно ли ускорить/избежать non-equi join? / 7 сообщений из 7, страница 1 из 1
31.05.2014, 23:50
    #38657858
voldermar666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли ускорить/избежать non-equi join?
Всем привет!
Проблема состоит в следующем:
Есть таблица, в которую сваливаются данные о действиях юзеров на сайте, в том числе 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
01.06.2014, 01:08
    #38657870
lookat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли ускорить/избежать non-equi join?
voldermar666,

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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