Получить статистическую информацию о таблице и ее индексах (statistics_info)

Назначение
 

Метод statistics_info предоставляет количественные данные и позволяет получить информацию, которая может быть использована для получения статистики о таблице и ее индексах.

Пакет

Package Linter::db

Прототип
$sth = $dbh- >statistics_info($catalog, $schema, $table,
                             $unique_only, $quick);
Параметр Описание
$catalog  См. метод table_info (параметр не принимает шаблон для поиска)
$schema  См. метод table_info (параметр не принимает шаблон для поиска)
$table  См. метод table_info (параметр не принимает шаблон для поиска)
$unique_only  Задает вид предоставляемой информации об индексах:
  • true: только об уникальных индексах;
  • false: о всех индексах
$quick  Параметр игнорируется
Возвращаемые значения
Переменная Описание
$sth Объект Statement Handle

Метаданные индекса – массив значений следующих атрибутов индекса:

Имя элемента Значение
TABLE_CAT  Пустая строка
TABLE_SCHEM  Имя схемы таблицы (символьное значение в кодировке ANSI длиной до 66 символов)
TABLE_NAME  Имя таблицы
NON_UNIQUE  Признак уникальности значений столбца:
  • 0 – для уникальных индексов;
  • 1 – для не уникальных индексов
INDEX_QUALIFIER  Пустая строка
INDEX_NAME  Имя индекса
TYPE  Значение 3 (соответствует идентификатору SQL_INDEX_OTHER по спецификации ODBC)
ORDINAL_POSITION  Порядковый номер данного индексированного столбца (отсчет начинается с 1)
COLUMN_NAME  Имя столбца
ASC_OR_DESC  Значение «A» – сортировка по возрастанию, пустая строка – сортировка индексов не поддерживается
CARDINALITY  Значение undef
PAGES  Значение undef
FILTER_CONDITION  Значение undef
Пример
my $drh = DBI- >install_driver('Linter');
my $dbh = $drh- >connect("", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI- >errstr;
$dbh- >do("create table TEST_TABLE(int_column int, char_column char(16));");
$dbh- >do("create index ndx_test_table on TEST_TABLE(int_column);");
my $sth = $dbh- >statistics_info('', 'TEST_TABLE', '', undef, undef);
while (my $data_ref = $sth- >fetchrow_hashref())
{
          print($data_ref- >{TABLE_CAT} . "\n");
    print($data_ref- >{TABLE_SCHEM} . "\n");
    print($data_ref- >{TABLE_NAME} . "\n");
    print($data_ref- >{NON_UNIQUE} . "\n");
    print($data_ref- >{INDEX_QUALIFIER} . "\n");
    print($data_ref- >{INDEX_NAME} . "\n");
    print($data_ref- >{TYPE} . "\n");
    print($data_ref- >{ORDINAL_POSITION} . "\n");
    print($data_ref- >{COLUMN_NAME} . "\n");
    print($data_ref- >{ASC_OR_DESC} . "\n");
    print($data_ref- >{CARDINALITY} . "\n");
    print($data_ref- >{PAGES} . "\n");
          print($data_ref- >{FILTER_CONDITION} . "\n");
}
$dbh- >do("drop table TEST_TABLE;");
$sth- >finish();
$dbh- >disconnect();