所以,我在使用PostgreSQL时目睹了以下行为.
我有这样一个表:(id INTEGER …,msg VARCHAR(2000))
然后我运行两个完全相同的程序A和B,
即进行20000次插入然后进行20000次检索(基于其ID).唯一的
区别在于程序A使用包含消息的插入
B只插入包含最多10个字符的消息.
问题是所有插入和检索的平均时间
在A中总是比在B中少约15ms,这实际上没有意义,
因为A正在添加“更大”的数据.
关于为什么会发生这种情况的任何想法或提示?可能是不使用时
msg的所有字符系统使用其余空间用于其他目的,因此如果msg已满,系统会更快?
基于@Dan Bracuk的评论.我节省了不同事件的时间,并意识到发生以下情况,在程序A中有很多次插入真的非常快,而在程序B中从来都不是这样的,这就是为什么平均A比B快但我不能解释这种行为.
如果没有关于您的设置和程序的更多细节,我无法重现这一点,所以以下只是一个有根据的猜测.可以想象你的观察是由TOAST引起的.一旦文本字段超过特定大小,它就存储在物理上独立的表中.因此,主表实际上小于所有文本值以内联方式存储的情况,因此搜索可能更快.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。