0
我正在玩vb.net应用程序中的SQLite数据库。数据库应该存储许多变量的时间序列数据。 现在我想建立2个表的数据库如下:带有未知外键的SQLite查询
表varNames:
CREATE TABLE IF NOT EXISTS varNames(id INTEGER PRIMARY KEY, varName TEXT UNIQUE);
它看起来像这样:
ID | varName
---------------
1 | var1
2 | var2
... | ...
表varValues:
CREATE TABLE IF NOT EXISTS varValues(timestamp INTEGER, varValue FLOAT, id INTEGER, FOREIGN KEY(id) REFERENCES varNames(id) ON DELETE CASCADE);
它看起来像这样:
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 & "');
由于用户不知道variabel ID,变量(在NAMEvariable)的只有名字,我用..WHERE(SELECT ...语句看来。这样真的会减慢性能。该时间序列有高达50K点。
有没有更好的方式来查询值只能通过它的名字来解决特定的变量?