"Int to Char"和"Char to Int"哪个更有效?

  • 本文关键字:to Char Int 有效 sql sql-server
  • 更新时间 :
  • 英文 :


我正在尝试连接两个表 A 和 B。键变量在表 A 中采用整数格式,在表 B 中采用字符格式(尽管它都由数字组成(。因此,我可以将表 A 中的列转换为 varchar,或者将表 B 中的列转换为 int。

查询 1:

select a.*
from tableA a 
inner join tableB b on Cast(a.key as varhcar(10))=b.key

查询2:

select a.*
from tableA a 
inner join tableB B on a.key=cast(b.key as int)

我的问题是这些查询中哪一个最有效,为什么?

你应该修复你的数据模型!

这与类型转换的效率无关。 基本上,如果无法使用索引,SQL Server 将使用嵌套循环连接(我很想听到它们实际上使用哈希连接,但我不记得在这种情况下看到过这种情况(。

所以,如果你没有索引,它真的没有什么区别。

如果你在一个表上有一个索引 - 好吧,你想避免对该列的转换。 例如,此查询:

select a.*
from tableA a inner join
tableB B
on a.key = cast(b.key as int)

可以在a(key)上使用索引。 执行计划将扫描b并使用索引来"查找"值。 但是,它不会在b(key)上使用索引。

综上所述,修复您的数据模型。 外键关系应该正确声明 - 这要求类型匹配。

出于以下原因,最好从 char 转换为 int: 1-计算机中的比较操作基本上在数值之间完成。 2-过程会更快。 3-更精确的结果。

相关内容

最新更新