Внутренние таблицы в базе данных SQLite и SQL команда ANALYZE.
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/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.
*/