怀化优化网站排名,wordpress单页面博客,阿里云个人网站建设方案书,网站建设高效解决之道SQLite 开发团队于 2023 年 11 月 01 日发布了 SQLite 3.44.0 版本#xff0c;带来了一些 SQL 和优化器增强#xff0c;本文给大家做一个简要分分析。
新增 concat() 函数
新版本增加了两个连接字符串的函数#xff1a;concat() 以及 concat_ws()。它们可以兼容 PostgreSQ…SQLite 开发团队于 2023 年 11 月 01 日发布了 SQLite 3.44.0 版本带来了一些 SQL 和优化器增强本文给大家做一个简要分分析。
新增 concat() 函数
新版本增加了两个连接字符串的函数concat() 以及 concat_ws()。它们可以兼容 PostgreSQL、SQLServer 以及 MySQL例如
sqlite select concat(sql, ite);
sqlite
sqlite select concat_ws(-,S, Q, L);
S-Q-L新增 string_agg() 函数
SQLite 提供了实现字符串聚合的 group_concat 函数新版本为其增加了一个别名函数 string_agg()目的是为了兼容 PostgreSQL 以及 SQL Server 语法。例如
sqlite create table test(pid int, val text);
sqlite insert into test values(1, S),(1,Q),(1,L);
sqlite select pid, string_agg(val,-)... from test... group by pid;
1|S-Q-L聚合函数 ORDER BY 子句
新版本支持在聚合函数中使用 ORDER BY 子句指定数据在聚合函数中处理的顺序。这个参数对于某些聚合函数没有实际意义例如 max()但是对于某些聚合函数比如 string_agg() 以及 json_group_array()该参数将会影响最终的结果。例如
sqlite select pid, string_agg(val,- order by val)... from test... group by pid;
1|L-Q-Sstrftime() 新增参数
strftime() 函数增加了以下格式参数
%e返回月份中的第几天0-31%FISO-8601 格式日期YYYY-MM-DD%I12小时制对应的小时01-12%k24 小时制对应的小时0-24%l12小时制对应的小时1-12%p代表上午和下午的“AM”和“PM”%P代表上午和下午的“am”和“pm”%RISO-8601 格式时间HH:MM%TISO-8601 格式时间HH:MM:SS%u一周中的第几天1 代表星期一。
查询优化器
对于部分索引扫描如果 WHERE 子句包含一个字段的常量值那么可以用该常量替换该字段。这种优化增加了部分索引成为覆盖索引的可能性。
禁用了 3.42.0 版本增加的视图扫描优化因为它导致了成倍的性能下降。
其他改进
新增了两个 C 语言 APIsqlite3_get_clientdata() 以及 sqlite3_set_clientdata()。
CREATE TABLE 语句相关的许多错误在创建表时立即抛出而不是等到该表第一次被访问时抛出。
PRAGMA integrity_check 命令使用新的 xIntegrity 方法验证各种内置虚拟表的内容一致性。该功能支持 FTS3、FTS4、FTS5、RTREE 以及 GEOPOLY 插件。
配置选项 SQLITE_DBCONFIG_DEFENSIVE 将会阻止启用 PRAGMA writable_schema 选项。在之前的版本中writable_schema 可以被启用但是不会实际生效。
内置 FTS3、FTS4、FTS5、RTREE 以及 GEOPOLY 虚拟表被设置为 SQLITE_VTAB_INNOCUOUS因此它们可以在高安全部署环境中被用于触发器。
弃用 PRAGMA case_sensitive_like 语句因为当模式包含 LIKE 操作符时会导致数据库被 PRAGMA integrity_check 损坏的报告。
当使用 Microsoft C 编译器时默认启用 SQLITE_USE_SEH结构化异常处理。该选项可以使用 -DSQLITE_USE_SEH0 禁用。
SQLite 在运行时检查底层硬件是否支持精度大于“double”的“long double”类型并且基于检查结果使用相应的浮点数程序。
如果系统支持Windows 命令行接口CLI默认使用 UTF-8 编码进行输入输出。使用 --no-utf8 选项启动可以禁用 UTF8 支持。