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點。
有沒有更好的方式來查詢值只能通過它的名字來解決特定的變量?