1

1)我的问题是,当我有两张大桌子时,由于尺寸太大而无法更改。现在我必须将它们加入一个公共字段,然后比较两个表中的一个字段,该字段具有相同的数据,但一个数据类型是 int,另一个是 varchar。我知道我们可以很容易地做到这一点,但是当表有数百万条记录时,两种不同数据类型之间的比较会变慢,我怎样才能让它变快。

2)我类似的第二个问题是,当我必须在某个字段(如 id)上连接两个表时,并且这两个表中的数据类型不同。就像一个是 int 和另一个是 char .....我怎么能加入这两个表,因为我不能等待很多天。

(我尝试过的一个解决方案是将新表创建为 old 的摘要(通过 in 文件输出文件)。虽然我现在在创建表期间将数据类型从 char 更改为 int ,然后获取 in 文件)

如果有人有其他解决方案,请分享

4

3 回答 3

1

确保转换发生在连接中的第一个表上,这样:

  1. 转换每行只发生一次
  2. 索引可用于与第二个表连接

例如:

select * 
from table1
join table2 on table2.intcol = cast(table1.varcharcol as signed)

此示例查询将使用 table2.intcol 上的索引(如果存在)来连接两个表。

于 2012-03-26T05:44:14.747 回答
0

是的,强制转换可用于更改数据类型

于 2012-03-28T05:43:32.507 回答
0
select * 
from table1
join table2 on table2.intcol = cast(col as int)
于 2012-03-29T18:25:04.643 回答