SQLite3的反向二进制整理有哪些实际用途?

时间:2013-02-23 19:59:20

标签: database sqlite

一位员工询问欧文斯在“权威指南SQLite”第2版,第101页中所写的关于整理类型的内容:“反向更多是为了测试(也许是插图)而不是其他任何东西。”

这对于SQLite作为dbms的实现是否有效?反向二进制排序规则是否具有实际用途? SQLite的反向/二进制排序规则是否会影响查询性能,例如,使用ORDER BY?

1 个答案:

答案 0 :(得分:1)

SQLite没有reverse归类。

显然,rtrim collation(忽略尾随空格字符)和reverse_unordered_selects编译指示之间存在混淆。

后者对测试很有用; its documentation说:

  

PRAGMA reverse_unordered_selects = 布尔;

     

启用后,此PRAGMA会导致没有ORDER BY子句的SELECT语句以与通常相反的顺序发出结果。这可以帮助调试对结果顺序做出无效假设的应用程序。

     

如果SELECT省略了ORDER BY子句,SQLite不保证结果的顺序。即便如此,结果的顺序也不会从一次运行变为另一次运行,因此许多应用程序错误地依赖于任意输出顺序,无论顺序是什么。但是,有时新版本的SQLite将包含优化器增强功能,这些增强功能将导致没有ORDER BY子句的查询的输出顺序发生变化。发生这种情况时,依赖于某个输出顺序的应用程序可能会出现故障。通过禁用和启用此pragma多次运行应用程序,可以及早识别和修复应用程序对输出顺序进行错误假设的情况,从而减少链接到不同版本的SQLite可能导致的问题。

相关问题