5.5Kпросмотров
8 мая 2024 г.
Score: 6.0K
Современный SQLite: Вычисляемые столбцы Вычисляемые (generated) столбцы рассчитываются на основании других столбцов той же таблицы. Например, мы можем рассчитать процент отказов на основе количества запросов: create table stats ( date text, n_total int, n_failed int, fail_perc as (n_failed*100.0 / n_total)
); Другой распространенный сценарий — вытащить поле JSON-документа в отдельный столбец, и при необходимости проиндексировать его: create table events ( id integer primary key, event blob, etime text as (event ->> 'time'), etype text as (event ->> 'type')
); create index events_time on events(etime); insert into events(event) values
('{"time": "2024-05-01", "type": "credit"}'),
('{"time": "2024-05-02", "type": "debit"}'),
('{"time": "2024-05-03", "type": "close"}'); select etime, etype from events; Результат: ┌────────────┬────────┐
│ etime │ etype │
├────────────┼────────┤
│ 2024-05-01 │ credit │
│ 2024-05-02 │ debit │
│ 2024-05-03 │ close │
└────────────┴────────┘ Так SQLite превращается в документную базу данных: — Храним JSON-документы как текст или blob-поле.
— Извлекаем отдельные поля через вычисляемые столбцы.
— Строим индексы, если нужна быстрая выборка. Вычисляемые столбцы могут рассчитываться на лету (virtual) или храниться на диске (stored). Stored-столбцы редко используют на практике. Работает в SQLite 3.31+ (январь 2020). песочница • документация