Следующий

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

2 Просмотры· 06/18/20
Кирилл Антонов
Кирилл Антонов
Подписчики
0

Помощь проекту:
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.

*/

Показать больше

 0 Комментарии sort   Сортировать


Следующий