这个问题是关于如何使用sqlite实现最佳性能。
如果您有一个表,其中一列是您经常更新的,而另一列是您很少更新的,那么最好将该表拆分为两个不同的表,这样您就有两个表,每个表有一列(不包括主键),而不是一个表,每个表有两列(不包括主键)?
我曾试图在sqlite文档中找到有关这方面的信息,但对于更新表中一行的一列究竟会发生什么,我还没有找到解释。我找到的最接近我问题的答案是:
在sqlite的insert和select处理过程中,数据库中每一行的完整内容都被编码为一个blob。因此sqlite\u max\u length参数还确定了行中的最大字节数。
(引自:https://www.sqlite.org/limits.html)
对我来说,这听起来好像每一行在内部都存储为所有列中的一个大blob,这意味着更新行中的一列确实会导致整行在内部重新编码,包括该行的所有其他列,即使它们没有作为更新的一部分被修改。但我不确定我是否正确理解我引用的那句话。
我在考虑一个例子,其中一列存储大小为多mb的大blob,另一列存储整数。带有大blob的列可能每月只更新一次,而带有整数的列可能每秒更新一次。根据我目前的理解,似乎每秒更新一次整数会导致每次更新整数时都要重新编码多mb的blob,这将是非常低效的。对于blob有一个表,对于整数有一个不同的表会更好。
暂无答案!
目前还没有任何答案,快来回答吧!