Sqlite数据库组织

时间:2013-11-19 18:18:48

标签: sqlite sql-delete composite-key

所以我有一系列记录的老鼠发声(这对动物来说是正确的)。我记录了几只老鼠。此外,每个记录以300e3 Hz采样,持续时间为几毫秒。因此,每个记录包含存储在称为值的列中的数万个浮点数。我已将所有这些存储在一个sqlite数据库中,但我对组织它的最佳方法有疑问。现在我有一个复合主键(rat_id char(2),recording_#INT,time_step INT)。对于每个新的rat_id,recording_#从0开始,并且对于每个新的recording_#,time_step从0开始。当我尝试删除记录并将recording_index的所有值都大于我删除的值时,问题就出现了。这当然需要永远,因为每次发生这种情况时都必须进行数百万次操作。

cur.execute("DELETE FROM recordings WHERE ratid=? AND recording_index=?", (self.rat, recording_index))
cur.execute("UPDATE recordings SET recording_index = -(recording_index-1) WHERE ratid=? AND recording_index>?", (self.rat, recording_index))
cur.execute("UPDATE recordings SET recording_index = -recording_index WHERE ratid=? AND recording_index<0", (self.rat,))

那么是否有更好的方法来组织表格,使得deincrement操作不需要花费很长时间,或者我不应该对deincrement操作感到烦恼。我真的不需要这样做。我只是过分关注细节。

0 个答案:

没有答案