当前位置: 首页 > 面试题库 >

在这里使用varbinary而不是varchar有什么优势?

勾起运
2023-03-14
问题内容

不久前,我问了一个有关SQL Server中的层次结构/版本号排序的问题。( 如何使用SQL
Server查询一般地对“版本号”列进行排序
)。

在提交的答案中,有一个与TSQL编码挑战的链接与此相似。

在SQL2000解决方案中,作者演示了两种变体,一种使用并返回varchar,另一种使用varbinary。作者解释说他正在这样做,而没有解释为什么。

因此,我的问题是,方法上的主要区别/优势(如果有)是什么?即为什么使用varbinary而不是varchar?

我已经省略了发布代码的过程,因为上面的文章对代码进行了最优雅的总结。


问题答案:

我相信期望是,与原始字符串的每个部分相比,varbinary数据通常消耗的字节数(5个)要少于varchar个字节(我认为是10或11个),因此,对于大量组件或与之进行比较发生时,它应该更有效。

但我建议,如果您希望使用这两种解决方案,请同时实施这两种解决方案(它们都非常简短),并尝试对实际数据(和查询html" target="_blank">模式)进行剖析,以查看是否存在实际差异(我不会如此)。

(Crafty Steal):正如马丁指出的那样,二进制比较将更加有效,因为它不会涉及处理排序规则的所有代码。:-)



 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 对所有基于文本的字段使用通用varchar(255)有不利之处吗? 在MYSQL中,您可以为VARCHAR字段类型选择一个长度。可能的值为1-255。 但是,如果使用最大值而不是VARCHAR(20)的VARCHAR(255),它的优点是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。 大小(字节)=长度+1 因此,如

  • 问题内容: 我建议实施这样的超时: 有人可以告诉我使用此方法而不使用setTimeout的原因/优势是什么? 问题答案: 用基本的话指的是angularjs when-指JavaScript。 如果您仍然认为要使用,则需要在之后调用 示例1:$ timeout 示例2:setTimeout(相同的逻辑) 演示版 $超时也返回一个承诺 JS HTML $超时也会触发摘要周期 考虑我们有一些3d派对代

  • 问题内容: 有没有办法在MS SQL Server 2005上没有master.dbo.fn_varbintohexstr函数的情况下将varbinary转换为ASCII varchar字符串(base64,md5,sha1-没关系)?因为它不能在计算列内部使用。 CONVERT和CAST返回非ASCII字符串。 谢谢, 问题答案: 对于md5和sha1,您可以使用hashbytes。要获取bas

  • 问题内容: 我已经在MSDN论坛上对此进行了阅读,但我仍然不清楚。我认为这是正确的:Varchar(max)将存储为文本数据类型,因此存在缺点。因此,可以说您的字段可靠地在8000个字符以内。就像我的数据库表中的BusinessName字段一样。实际上,一个公司名称可能总是少于500个字符(将数字拉出帽子)。在8k字符数以下,我遇到的许多varchar字段似乎都很好。 那么我应该将该字段设置为va

  • 问题内容: 对于Java的处理方式以及涉及到的数字和其他类型的数字,我有些困惑。例如: 输出(也许您应该先猜测一下): 这不能编译是可以预料的,是不同的对象。 令我有些惊讶的是,默认情况下9是an ,并且1)甚至没有编译。请注意,您不能将放入期望使用的方法中,但是在这里它们是相等的。 由于两个相同的原因,这令人惊讶,但似乎更糟。 不足为奇,因为自动装箱到和。 不足为奇,因为不同类中的对象不应该是。

  • 问题内容: 我正在尝试通过以下方式将日期范围划分为各个日期: 而且我不知道为什么不起作用,因为日期仍然相同,所以循环变得无限。 问题答案: plusDays不会改变原始的,您必须分配结果: