我有一张看起来像这样的表。
| 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 :(得分:2)
您应该始终尝试拥有一个正确的normalized数据库。
在这种情况下,坐标列表不在first normal form中。 如果将坐标移动到单独的表中,则可以使用简单明了的查询搜索坐标,可以使用索引加速:
CREATE TABLE MyTable (
ID,
[...]
);
CREATE TABLE MyCoordinates (
MyTableID,
CoordX,
CoordY
);
SELECT MyTableID FROM MyCoordinates WHERE X = ? AND Y = ?;