连接整数列比Postgresql中的varchar连接更有效吗?

时间:2011-06-03 15:03:17

标签: postgresql join integer varchar

我听说/读过关于整数列的连接比varchar列上的连接更有效的建议。有时我听说这有资格:“连接整数列比连接 long varchar列更有效。”

任何人都可以评论这两种说法是否属实,如果是,那么一些基本原因是什么?

欢迎并赞赏任何文章或参考文献。谢谢!

3 个答案:

答案 0 :(得分:5)

我不熟悉Postgresql,但我希望在任何数据库上都是如此,原因很简单,整数的比较远比字符串的比较有效。

要进行连接,数据库需要在关键字段上搜索索引。搜索整数索引必须比搜索字符串索引更快。不仅涉及的数据更少,而且可以在单个CPU操作中快速执行比较,而不是使用区分大小写和本地化逻辑进行复杂的字符串比较。

这是假设“更有效”,你的意思是微秒速度优势超过。当然,可能存在架构考虑因素意味着在字符串上创建连接对于数据库设计来说总体上是更好的事情。但一般来说,除了整数之外,我还没有加入任何其他内容。

答案 1 :(得分:1)

这是事实,因为在CPU的内部,字符串比较非常复杂。

答案 2 :(得分:1)

This post发现字符串连接占用了35% - 比整数连接(在SQL Server上)多100%的CPU时间,具体取决于字符串列的大小以及列是否已编制索引。经过的时间差异较小(4% - 20%)。正如作者所说,YMMV - 您应该测试自己的案例,看看是否存在显着差异。