Доступные версии документации

Получить статистическую информацию о таблице и ее индексах (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", "MANAGER")
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();
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter