0

同僚は、Owens が The Definitive Guide to SQLite, 2nd ed, p101 で書いた、照合タイプに関することについて尋ねました。

これは、SQLite の dbms としての実装に間違いなく有効ですか? 逆バイナリ照合には実用性がありますか? SQLite のリバース/バイナリ照合は、たとえば ORDER BY を使用する場合など、クエリのパフォーマンスに影響しますか?

4

1 に答える 1

1

reverseSQLite には照合順序がありません。

どうやら、rtrim照合(末尾のスペース文字を無視する) とreverse_unordered_selectsプラグマの間に混乱があるようです。

後者はテストに役立ちます。そのドキュメントには次のように書かれています:

PRAGMA reverse_unordered_selects = boolean ;

この PRAGMA を有効にすると、ORDER BY 句のない SELECT ステートメントは、通常とは逆の順序で結果を発行します。これは、結果の順序について無効な仮定をしているアプリケーションをデバッグするのに役立ちます。

SELECT が ORDER BY 句を省略した場合、SQLite は結果の順序について保証しません。それでも、結果の順序は実行ごとに変わらないため、多くのアプリケーションは誤って、その順序がどうであれ、任意の出力順序に依存するようになります。ただし、SQLite の新しいバージョンには、ORDER BY 句のないクエリの出力順序をシフトさせるオプティマイザーの機能強化が含まれている場合があります。その場合、特定の出力順序に依存するアプリケーションが誤動作する可能性があります。このプラグマを無効にした場合と有効にした場合の両方でアプリケーションを複数回実行することで、アプリケーションが出力順序について誤った想定を行うケースを早期に特定して修正し、異なるバージョンの SQLite とのリンクによって引き起こされる可能性のある問題を軽減できます。

于 2013-02-23T21:41:44.523 に答える