网站即将上线 模板,网站被人做跳转了,网站开发的基础知识,网站一级域名和二级域名区别SQLite 开发团队于 2023 年 08 月 24 日发布了 SQLite 3.43.0 版本。本文给大家分析一下该版本的更新。
全文索引
SQLite 3.43.0 增加了 Contentless-Delete FTS5 索引。这是一种 FTS5 全文索引的变种#xff0c;不存储被索引的内容#xff0c;同时支持数据的删除操作。
例…SQLite 开发团队于 2023 年 08 月 24 日发布了 SQLite 3.43.0 版本。本文给大家分析一下该版本的更新。
全文索引
SQLite 3.43.0 增加了 Contentless-Delete FTS5 索引。这是一种 FTS5 全文索引的变种不存储被索引的内容同时支持数据的删除操作。
例如
CREATE VIRTUAL TABLE f1 USING fts5(a, b, c, content, contentless_delete1);Contentless-delete 表与 Contentless 表的区别在于
Contentless-delete 表支持 DELETE 以及 INSERT OR REPLACE INTO 语句Contentless-delete 表支持 UPDATE 语句前提是所有用户定义的字段都指定了新的数据Contentless-delete 表不支持 FTS5 删除命令。
例如
-- 支持以下 UPDATE 语句
UPDATE f1 SET a?, b?, c? WHERE rowid?;-- 不支持以下 UPDATE 语句因为字段 c 没有指定新的数据
UPDATE f1 SET a?, b? WHERE rowid?;除非存在旧版本的后向兼容需求推荐使用 Contentless-delete 表。
日期时间函数
新版本增强了日期时间相关的函数。首先是增加了“±YYYY-MM-DD HH:MM:SS.SSS”形式的时间偏移量例如
select date(2023-01-01, 1000-01-01);
3023-02-02其次新版本增加了 timediff(A, B) 函数计算从时间 B 到达时间 A 所需的时间。例如
select timediff(2023-06-01, 2023-01-01);
0000-05-00 00:00:00.000timediff() 函数返回的格式是字符串方便阅读。如果想要返回精确的时间差天数、秒数等可以使用两个 julianday() 或 unixepoch() 函数相减。
字符串函数
SQLite 3.43.0 增加了一个 octet_length(X) 字符串函数用于返回字符串 X 占用的字节数。例如
select octet_length(Hello);
5select octet_length(你好);
6octet_length(X) 以字节为单位而不是字符为单位。因此不同数据库字符集可能返回不同的长度。
C 语言接口
SQLite 3.43.0 新增了一个 sqlite3_stmt_explain(S,E) API用于改变预编译语句的 EXPLAIN 设置。
如果参数 E 设置为 0S 就是一个普通的预编译语句如果 E 设置为 1S 就变成一个以 EXPLAIN 开始的 SQL 语句如果E 设置为 2S 就变成一个以 EXPLAIN QUERY PLAN 开始的 SQL 语句。
查询优化
查询优化器增强包括
LEFT JOIN 强度削减优化扩展至 RIGHT JOIN 以及 FULL JOIN并且重命名为 OUTER JOIN 强度消减优化。改进了 OUTER JOIN 强度消减优化使用的理论证明器减少了假阴性的情况。
Decimal 扩展
新版本增强了与 decimal 扩展相关的内容
新增函数 decimal_pow2(N)返回 2.0 的 N 次方N 为 -2000 到 2000 之间的整数新增函数 decimal_exp(X)以科学计数法形式eNN返回 X 的十进制数字对于浮点数 Xdecimal(X) 函数将会返回完全扩展的精确数字。
例如
select decimal_pow2(10);
1.024e03select decimal_exp(12.3);
1.2300000000000000710542735760100185871124267578125e01select decimal(12.3);
12.300000000000000710542735760100185871124267578125JSON 性能
某些情况下对于大型 JSON 字符串的处理性能获得翻倍提升。