Идея заключается в том, чтобы сохранить его в строковом формате JSON
Перейти на это! Одной из причин не беспокоиться об эффективности является синергия, возникающая в результате:
1) поддержки SQLite индексов в выражениях https://www.sqlite.org/expridx.html
2) json_extract
Это означает, что вы можете добавлять индексы для столбцов JSON, не прибегая к дополнительным столбцам.
Пример
CREATE TABLE test (tags JSON);
CREATE INDEX test_idx ON test(JSON_EXTRACT(tags, '$.someKey'));
При наличии вышеуказанной инфраструктуры запросы, такие какбудет оптимизировано:
SELECT * FROM test WHERE JSON_EXTRACT(tags, '$.someKey')="xyzzy";
Примечание по терминологии
Фраза "строка JSON" может легко привести к путанице, так как она может относиться к тексту JSON (например, [1,"a"]
). ) или объект JSON, представляющий собой строку (например, "a"
). В SQLite обычно требуется хранить тексты JSON, которые, конечно, могут быть строками JSON.