Использование сбора статистики в 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) был бы весьма полезен в оптимизации.

кроме того, если демография таблицы была изменена (увеличено количество строк), вы должны рассмотреть возможность повторного сбора статистики