Использование сбора статистики в Teradata
в Teradata я могу использовать оператор like ...
collect statistics on my_table column(col1)
это соберет статистику в таблице и сохранит их в представлениях DBC, таких как ColumnStats, IndexStats и MultiColumnStats. У меня также создается впечатление, что оптимизатор (механизм синтаксического анализа) найдет статистику, когда они будут доступны, и использует их вместо расчетных значений мощности/индекса таблицы, чтобы принимать лучшие решения о том, как выполнить запрос.
Это все звучит здорово, но у меня есть некоторые вопросы.
- есть ли какие-либо недостатки в использовании
collect stats
? - когда целесообразно / нецелесообразно использовать сбор статистики в ваших сценариях SQL?
- каково преимущество производительности для сбора статистики по полю, которое уже проиндексировано?
- как долго хранится статистика (таблица, изменчивые таблицы)?
- любые другие комментарии по поводу
collect statistics
буду признателен.
1 ответов
1>Есть ли какие-либо недостатки в использовании сбора статистики?
да, сбор статистики сам по себе занимает много времени, он фактически находит данные из усилителей и вставляет статистику в таблицы словарей.
Предположим, у вас есть таблица определения типа:
ct t1 (x1 int,y1 int, z1 int);
таблица содержит миллионы строк и z1 никогда не используется в условиях ST/Join, тогда не стоит собирать статистику по z1.
2>Когда это целесообразно / нецелесообразно использовать сбор статистики в сценариях SQL?
уже ответил выше. Если столбец будет использоваться как условие ST/Join .Я. e в предложении where или on вы должны собирать статистику, в противном случае она не нужна.
3>в чем преимущество производительности для сбора статистики по полю, которое уже проиндексировано?
CT T1 (x1 int,y1 int) первичный индекс (x1);
для простого запроса типа sel * из t1, где x1 = 5;
будет продемонстрируйте полезность сбора статистики.
Как?
оптимизатор может правильно оценить, сколько строк этот запрос выберет, и если t1 будет объединен с say t2, эффективное соединение будет выбрано оптимизатором.
4>Как долго хранится статистика (таблица, изменчивые таблицы)?
таблица : постоянно.
volatile tables: до окончания сеанса.
5>любые другие комментарии, касающиеся сбора статистики будьте благодарны.
ничего не обсуждалось о многоколоночной статистике.
скажем, запрос выглядит так:
sel * из t1 присоединить t2 на y1=y2 и x1=2;
тогда сбор многоколоночной статистики на (x1, y1) был бы весьма полезен в оптимизации.
кроме того, если демография таблицы была изменена (увеличено количество строк), вы должны рассмотреть возможность повторного сбора статистики