2014-06-13 74 views
0

我想存儲大量的字符串到我的sqlite數據庫中。當我將它們添加到數據庫中時,我希望它們始終以相同的順序排列。我知道我可以給他們一個自動增量的主鍵,然後排序,但由於可以有多達100.000字符串,這是一個性能問題。除了訂單不應該改變或以任何不同的方式排序。如何在sqlite數據庫中存儲字符串數組並保持順序

短的例子:

SQL INSERT 「hghtzdz12g」 SQL INSERT 「jut65bdt」 SQL INSERT 「lkk7676nbgt」

SQL SELECT *要經常給這個順序{ 「hghtzdz12g」, 「jut65bdt」,「 lkk7676nbgt「}

任何想法如何實現這個?

感謝

+0

究竟是一個性能問題? –

+0

對數千個字符串進行排序可能需要一段時間嗎? –

+0

是的。一段時間 - 以毫秒爲單位。這是2014年。處理器頻率不是mhz; 25年前一百萬行很小。 – TomTom

回答

2

在查詢像

SELECT * FROM MyTable ORDER BY MyColumn 

數據庫不需要,如果列索引的結果進行排序,因爲它可以通過索引條目爲了以防掃描。

rowid(或任何你稱之爲autoincrementing列)是一個索引,並且比單獨的索引更有效。

+0

如果我理解你這個「CREATE TABLE IF NOT EXISTS strings(name TEXT)」應該夠了嗎?我剛剛開始學習數據庫處理,如果我理解rowid事情正確,我不知道。任何表都有一個rowid,還是我必須指定,當我創建表? –

+0

您必須說[WITHOUT ROWID](http://www.sqlite.org/withoutrowid.html)省略rowid。 –

0

如果你確信你將永遠不會需要任何東西,但正是這種陣列正是這個命令,你可以欺騙數據庫,並把在一個單一的BLOB字段。

但是你應該問自己爲什麼你首先選擇了一個數據庫。

正確的數據庫解決方案實際上是一個使用可以排序的密鑰的表。

如果此性能不夠,您可以看看here的性能提示。

如果您需要超快速的性能,也許數據庫不是工作的最佳工具。數據庫用於他們的能力和速度不是其中之一,而是軟件中所有東西的次要目標。

相關問題