Sybase IQ работает медленно с JOIN?

Я продолжаю слышать, что Sybase IQ очень плохо работает с объединениями, и в моей текущей работе основная модель данных (база данных Sybase IQ) основана на представлении с огромной денормализованной таблицей внизу и все еще большим количеством жестко запрограммированной логики и количества соединений и подзапросов (доходит до 5 уровней в глубину). ) - все в одном огромном представлении.

Я ошибаюсь, или я правильно думаю, что классическая схема «звезда» по-прежнему будет работать лучше, поскольку количество объединений в любом запросе будет ограничено (вместо того, чтобы вычислять всю сумасшедшую логику представления с каждым запросом)? У меня не было большого опыта работы вне Oracle Exadata, но, насколько я знаю, столбцовые базы данных, такие как Sybase IQ, по-прежнему прекрасно работают с соединениями.

Кто-нибудь может посоветовать хорошую практику?

1 ответ

Я думаю, вы говорите о IQ15.x -- старая версия, а последней является IQ16.1. Насколько я помню, у меня действительно возникла проблема с производительностью соединения на iq15.2, iq15.4 — например, — создайте представление как «объединение всех результатов из 3 таблиц», а затем объедините это представление с другой небольшой таблицей для фильтрации. Сначала он выполнит "объединение всех" - обычно генерирует огромную рабочую таблицу, а затем присоединяет эту рабочую таблицу к этой маленькой таблице. Но с более новой версией -- например. IQ16.0 или IQ16.1 -- он сместит маленькую таблицу к этим трем таблицам, чтобы сначала соединиться, а затем объединить 3 небольших набора результатов, чтобы вернуть окончательный набор результатов. Это действительно сильно улучшилось. Пожалуйста, попробуйте.

Другие вопросы по тегам