Возможно, вы используете результаты ANALYZE
для создания обходного пути. Создает объект внутренней схемы sqlite_stat1
2.6.3. Таблица sqlite_stat1
sqlite_stat1 - это внутренняя таблица, созданная командой ANALYZE.
и используется для хранения дополнительной информации о таблицах и индексах
что планировщик запросов может использовать, чтобы помочь ему найти лучшие способы
выполнение запросов. Приложения могут обновлять, удалять из, вставлять в
или удалить таблицу sqlite_stat1, но не может создавать или изменять
таблица sqlite_stat1. Схема таблицы sqlite_stat1 имеет вид
следующим образом:
CREATE TABLE sqlite_stat1(tbl,idx,stat);
Обычно на один индекс приходится одна строка, причем индекс определяется
имя в столбце sqlite_stat1.idx. Столбец sqlite_stat1.tbl
имя таблицы, к которой принадлежит индекс. В каждом таком ряду
столбец sqlite_stat.stat будет строкой, состоящей из списка
целые числа, за которыми следует ноль или более аргументов. Первое целое число в этом
список - это приблизительное количество строк в индексе. (Номер
количество строк в индексе равно числу строк в таблице,
за исключением частичных индексов.) .....
Если частичных индексов нет, SELECT tbl,cast(stat as INT)
вернет количество строк в каждой таблице, если в таблице нет 0 строк.
Этот sql дает ожидаемые результаты для небольшой производственной базы данных (25 МБ, 34 таблицы, 26 индексов, 33K + строки). Ваш пробег может (будет?) Варьироваться.
ANALYZE;
select DISTINCT tbl_name, CASE WHEN stat is null then 0 else cast(stat as INT) END numrows
from sqlite_master m
LEFT JOIN sqlite_stat1 stat on m.tbl_name = stat.tbl
where m.type='table'
and m.tbl_name not like 'sqlite_%'
order by 1;
--drop table sqlite_stat1;