2013-02-23 62 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而可能導致的問題。