varchar2 类型 字段与number字段数据关联时的效率差异。

[复制链接]
查看11 | 回复5 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
varchar2 类型 字段与number字段数据关联时的效率差异。
比如
a_v varchar2 ----> ID
a_n number----> ID
用这两种类型的字段关联的效率差异。谢谢!
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
效率差异,你那个怎么比较的??当然是NUMBER与NUMBER,VARCHAR2与VARCHAR2最好啦,NUMBER与VARCHAR2的关联,那么VARCHAR2的那方就会有隐式类型转换,如果本来VARCHAR2的那个字段走索引高效的话,有转换就走不了索引了,因此,可能低效,另外因为VARCHAR2要转为NUMBER,也可能会类型转换出错
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最好用同一类型关联,否则至少有1个表设计有问题
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
NUMBER与NUMBER关联 和 VARCHAR2与VARCHAR2关联 的效率 进行比较。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
对不起,是我没说清楚
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
感觉不到差别:
CREATE TABLE TEST1 AS SELECT OBJECT_ID N, TO_CHAR(OBJECT_ID) S FROM ALL_OBJECTS;
CREATE TABLE TEST2 AS SELECT OBJECT_ID N, TO_CHAR(OBJECT_ID) S FROM ALL_OBJECTS;

SELECT COUNT(*) FROM TEST1,TEST2 WHERE TEST1.N=TEST2.N;
COUNT(*)
----------
72349
Elapsed: 00:00:00.83
/
COUNT(*)
----------
72349
Elapsed: 00:00:00.04
SELECT COUNT(*) FROM TEST1,TEST2 WHERE TEST1.S=TEST2.S;

COUNT(*)
----------
72349
Elapsed: 00:00:00.11
/
COUNT(*)
----------
72349
Elapsed: 00:00:00.05
把字符串变得长一点,还是没有显著变化:
UPDATE TEST1 SET S=S||S||S||S;
UPDATE TEST2 SET S=S||S||S||S;
COUNT(*)
----------
72349
SELECT COUNT(*) FROM TEST1,TEST2 WHERE TEST1.S=TEST2.S;
Elapsed: 00:00:00.06
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行