2015-05-30 41 views
0

我有一張如下所示的表格。SQLite保存和遍歷字符串數組的最佳方式

| id | coords | 
    | 0 | [1,0],[4,3],[4,9],[9,3],[1,8]  
    | 1 | [3,6],[3,8],[7,4],[5,2],[2,1] 
    .. and more 

最多會有大約70k-100k行,而CPU功能不是很強大。

什麼是最快和最少CPU密集的SQLite語句,我可以用它來確定哪個ID有任何給定的座標?沒有兩個id分享一個座標。

示例。

SELECT * FROM mytable WHERE coords LIKE '%[[]3,8]%' 

我想上面的LIKE語句會變得非常密集嗎?

+0

不能更改數據庫的結構? –

+0

是的,什麼樣的結構更好? – ThatGuy343

回答

2

您應該始終嘗試擁有一個正確的normalized數據庫。

在這種情況下,座標列表不在first normal form中。 如果移動座標以一個單獨的表,你可以搜索一個淺顯的查詢座標,它可以與索引來加快:

CREATE TABLE MyTable (
    ID, 
    [...] 
); 
CREATE TABLE MyCoordinates (
    MyTableID, 
    CoordX, 
    CoordY 
); 

SELECT MyTableID FROM MyCoordinates WHERE X = ? AND Y = ?;