Внутренние таблицы в базе данных SQLite и SQL команда ANALYZE.

Поделиться
HTML-код
  • Опубликовано: 26 окт 2024
  • Помощь проекту:
    WMR: R288272666982
    WMZ: Z293550531456
    Яндекс.Деньги: 410011531129223
    Рубрика SQLite на сайте: zametkinapolyah...
    Паблик блога в ВК: zametki...
    Тематическая группа в ВК: zametki_bd
    -- Внутренние таблицы в базе данных SQLite и
    -- SQL команда ANALYZE.
    /*
    Команда ANALYZE собирает статистическую информацию обо всех
    индексах в базах данных SQLite для последующей оптимизации
    запросов.
    Этой команде можно передавать имя таблицы или имя базы данных,
    для которой следует собирать информацию.
    Когда вы выполняете команду ANALYZE в вашей БД создается
    таблица с именем sqlite_stat1, в которой хранится вся
    необходимая информация. Стоит отметить, что эта таблица
    не обновляется автоматические и если данные и их структура
    в вашей БД существенно изменились, то стоит повторно
    выполнить SQL команду ANALYZE.
    Таблицу sqlite_stat1 можно изменять вручную при помощи команд
    маниуляции данными.
    */
    ANALYZE dbname;
    ANALYZE tablename;
    .open chinook.db
    .headers on
    .tables
    SELECT * FROM sqlite_stat1;
    ANALYZE;
    SELECT * FROM sqlite_stat1;
    DROP TABLE sqlite_stat1;
    /*
    Как видим у таблицы sqlite_stat1 три столбца:
    tbl - имя таблицы
    idx - имя индекса
    stat - последовательность целых чисел:
    первое - приблизительное число строк в таблице,
    второе - приблизительное среднее число строк в таблице,
    которые имеют одинаковое значение в первом столбце индекса,
    N-ое число - приблизительное среднее число строк в таблице,
    которые имеют одинаковые значения в первых (N-1) столбцах
    индекса.
    У поля STAT может быть ключевое слово UNORDERED,оно означает,
    что планировщик SQLite не использует этот индекс для сортировки.
    */
    -- таблица SQLITE_MASTER
    SELECT * FROM sqlite_master;
    /*
    У таблицы sqlite_master пять столбцов:
    type - столбец для указания типа объекта базы данных (table,
    view, trigger, index)
    name - хранит в себе имя объекта базы данных
    tbl_name - имя таблицы или VIEW, которое связано с данным
    объектом БД
    rootpage - номеров корневой страницы для таблиц и индексов.
    Для VIEW, виртуальных таблиц и триггеров это поле будет
    либо NULL, либо 0.
    sql - это sql-запрос, который описывает объект базы данных.
    */
    -- посмотреть все таблицы в БД и их структуру
    SELECT * FROM sqlite_master WHERE type='table';
    -- получить всю информацию о конкретной таблице
    SELECT * FROM sqlite_master WHERE name='playlists';
    -- увидеть имена всех таблиц в БД
    SELECT name FROM sqlite_master WHERE type="table";
    -- таблица SQLITE_SEQUENCE
    SELECT * FROM SQLITE_SEQUENCE;
    /*
    Эта таблица используется для поддержания работы ограничения
    AUTOINCREMENT в базе данных SQLite.
    Для каждого инкремента, который создал пользователь в базе
    данных эта таблица хранит отедльную строку.
    Эту таблицу можно редактировать, будьте аккуратны.
    */
    -- таблица SQLITE_STAT2
    SELECT * FROM sqlite_stat2;
    /*
    В современных версиях библиотеки SQLite3 этой таблицы не
    существует, но раньше она использовалась для хранения
    информации о распределнии ключей в БД.
    */
    -- таблица SQLITE_STAT3
    SELECT * FROM sqlite_stat3;
    /*
    Данная внтренняя таблица SQLite появляется только в том
    случае, когда библиотека собрана с параметром
    SQLITE_ENABLE_STAT3 или SQLITE_ENABLE_STAT4 (у нашей
    тестовой БД эти параметры отключены). Эта таблица содержит
    в себе информацию о распределении ключей в пределах индекса.
    У внутренней таблицы sqlite_stat3 шесть столбцов:
    tbl - имя таблицы;
    idx - имя индекса;
    nEq - приблизительное среднее число записей в таблице,
    левый столбец которых равен sample;
    nLt - приблизительное среднее число записей в таблице,
    левый столбец которых меньше sample;
    nDlt - приблизительное среднее число разных записей в
    таблице, левый столбец которых меньше sample;
    sample - содержит значение крайнего левого столбца индекса;
    */
    SELECT * FROM sqlite_stat3;
    -- таблица SQLITE_STAT4
    /*
    Данная внтренняя таблица SQLite появляется только в том
    случае, когда библиотека собрана с параметром
    SQLITE_ENABLE_STAT4. Эта таблица содержит в себе информацию
    о распределении ключей в пределах индекса.
    tbl - имя таблицы;
    idx - имя индекса;
    nEq - список чисел, где k-ое число это приблизительное
    число записей в таблице, в которых k левых столбцов,
    равны k левым столбцам индекса;
    nLt - список чисел, где k-ое число это приблизительное число
    записей в таблице, в которых k левых столбцов, в
    совокупности, меньше k левых столбцов индекса;
    nDLt - список чисел, где k-ое число это приблизительное
    число разных записей в таблице, в которых k левых столбцов,
    в совокупности, меньше k левых столбцов индекса;
    sample - содержание индекса в формате записи (record format);
    SQLITE_STAT4 является обощенным вариантом SQLITE_STAT3.
    */

Комментарии •