Database 具有未知外键的SQLite查询
我正在vb.net应用程序中玩SQLite数据库。数据库应该存储许多变量的时间序列数据。 现在,我正在尝试使用以下两个表构建数据库: 表变量名:Database 具有未知外键的SQLite查询,database,vb.net,sqlite,Database,Vb.net,Sqlite,我正在vb.net应用程序中玩SQLite数据库。数据库应该存储许多变量的时间序列数据。 现在,我正在尝试使用以下两个表构建数据库: 表变量名: CREATE TABLE IF NOT EXISTS varNames(id INTEGER PRIMARY KEY, varName TEXT UNIQUE); 看起来是这样的: ID | varName --------------- 1 | var1 2 | var2 ... | ... time
CREATE TABLE IF NOT EXISTS varNames(id INTEGER PRIMARY KEY, varName TEXT UNIQUE);
看起来是这样的:
ID | varName
---------------
1 | var1
2 | var2
... | ...
timestamp | varValue | id
------------------------------
1 | 1.0345 | 1
4 | 3.5643 | 1
1 | 7.7866 | 2
3 | 4.5668 | 2
... | .... | ...
表1:变量值:
CREATE TABLE IF NOT EXISTS varValues(timestamp INTEGER, varValue FLOAT, id INTEGER, FOREIGN KEY(id) REFERENCES varNames(id) ON DELETE CASCADE);
看起来是这样的:
ID | varName
---------------
1 | var1
2 | var2
... | ...
timestamp | varValue | id
------------------------------
1 | 1.0345 | 1
4 | 3.5643 | 1
1 | 7.7866 | 2
3 | 4.5668 | 2
... | .... | ...
第一个表包含所有ID为的变量名。第二个表包含由时间戳指示的许多时间步的每个变量的值。外键通过变量ID链接表
建立数据库很好
现在我想查询数据库并绘制所选变量的时间序列。为此,我使用以下语句:
select [timestamp], [varValue] FROM varValues WHERE (SELECT id from varNames WHERE varName= '" & NAMEvariable & "');
因为用户不知道VariableID,所以我只使用NAMEvariable中的变量名..WHERE SELECT。。。陈述这似乎真的会降低性能。时间序列最多有5万个点
有没有更好的方法来查询只能通过名称来处理的特定变量的值?您可能应该使用查询,例如:
SELECT a.[timestamp], a.varValue
FROM varValues AS a, varNames AS b
WHERE b.varName = <name>
AND a.id = b.ID
编辑:要查询多个参数,请使用以下命令:
SELECT a.[timestamp], a.varValue
FROM varValues AS a, varNames AS b
WHERE b.varName IN (<name1>, <name2>, ...)
AND a.id = b.ID