2013-02-23 27 views
0

一位员工询问Owens在“SQLite权威指南”第二版第101页中写到的有关整理类型的内容:“反向更多的是测试(也许是插图)。”SQLite3的反向二进制排序有什么实际用途?

这可以证明SQLite的dbms实现有效吗?反向二进制整理是否有实际用途? SQLite的反向/二进制排序会影响查询性能,例如,当使用ORDER BY时?

+0

也许这不再是SQLite3,因为目前的文档没有提到反转。 http://www.sqlite.org/datatype3.html#collat​​ion – ybakos 2013-02-23 20:04:56

+0

您可以在创建表时使用反向排序规则类型,但不能将其用作WHERE修饰符,也不能在创建索引时使用。嗯... – ybakos 2013-02-23 20:24:14

回答

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子句的查询的输出顺序发生变化。发生这种情况时,依赖于某个输出顺序的应用程序可能会发生故障。通过多次运行应用程序并使用此编译指示禁用和启用,可以及早识别和修复应用程序对输出顺序进行错误假设的情况,从而减少由于链接到不同版本的SQLite而可能导致的问题。