ins*_*ity 8 sql database postgresql varchar
因此,我在使用PostgreSQL时目睹了以下行为.
我有一个这样的表:(id INTEGER ..., msg VARCHAR(2000))
然后我运行两个程序,A并B做同样的事情,即做20000次插入然后20000次检索(基于他们的id).唯一的区别是程序A插入包含2000个字符的消息,而B只插入包含最多10个字符的消息.
问题在于,所有插入和检索的平均时间A总是比B实际上没有意义的约15毫秒,因为A添加"更大"的数据.
关于为什么会发生这种情况的任何想法或提示?可能是因为当不使用系统的所有字符时,将msg剩余的空间用于其他目的,因此如果msg已满,系统会更快?
基于@Dan Bracuk的评论.我节省了不同事件的时间,并意识到以下情况发生了,在程序中A有很多次插入真的非常快,而在程序B中从来就不是这样的,这就是为什么平均速度A快B但我无法解释这种行为.
如果没有有关您的设置和程序的更多详细信息,我无法重现此内容,因此以下内容只是一个有根据的猜测。可以想象,你的观察是由于TOAST。一旦文本字段超过一定大小,它就会存储在物理上独立的表中。因此,主表实际上比所有文本值都内联存储的情况要小,因此搜索速度可能会更快。
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |