我有一个名为 用户 的SQLite表。每个 用户 都有一个主 UserID 和多个 SecID (所有整数)。 SecIDs 以CSV格式存储为单个字段(类型为String)。例如,假设 User1 的 SecIDs 为4,5,6,7,而 User2 的 SecIDs 为8, 9,55,66。
因此对于 User1 : -
UserID = 1
SecIDs =" 4,5,6,7"
对于 User2 : -
UserID = 2
SecIDs =" 8,9,55,66"
(依此类推)
现在我的问题是 - 我有一个特定的SecID说5.我必须提取对应的UserID(即1)。那么这个操作的查询是什么?
P.S-我的SQLite表中可能有数十万条用户记录。因此,搜索查询应该针对最短时间消耗进行优化。
答案 0 :(得分:1)
这根本不是您执行SQL或关系数据库的方式,因此SQLite没有特定的SELECT
语法。当然,您可以通过字符串模式~"12"
搜索所有字段,但这是一个可怕的想法,因为它匹配12和128一样多达112.
您应该做的是重新构建数据库。获取1对n映射表以将SecID映射到用户;它并不难,速度快得多,而且是一个两列表:
+-----+----+
|SecID|User|
+-----+----+
| 4| 1|
| 5| 1|
| 6| 1|
| 7| 1|
| 8| 2|
| 9| 2|
| 55| 2|
| 66| 2|
+-----+----+
它将更快,更不容易出错,并且在RAM和永久存储中都更加紧凑。