免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6529 | 回复: 11
打印 上一主题 下一主题

sybase IQ的加载错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-19 12:19 |只看该作者 |倒序浏览
下面是我使用load table语句从一个.out文件(相当于文本文件)中把数据导入到IQ库表中,下面是导入的语句:
load table ODS_G_PPS_SMS_CDR(
CDR_NAME '"|"' ,
SERVICE_KEY '"|"' ,
NET_FLAG '"|"' ,
CALLING_PARTY_NUMBER '"|"' ,
USER_NO '"|"' ,

CALLED_PARTY_NUMBER '"|"' ,
ADDRESS '"|"' ,
MOBILE_ZONE '"|"' ,
OPPOSE_AREA_CODE '"|"' ,
SMS_TYPE '"|"' ,

FREE_FLAG '"|"' ,
SM_LENGTH '"|"' ,
SERIAL_NO '"|"' ,
CHARGE_FLAG '"|"' ,
SM_COST '"|"' ,
SEND_TIME '"|"' ,
CORP_ID '"|"' ,

SERVICE_TYPE '"|"' ,
PAY_MSDN '"|"' ,
FEE_VALUE '"|"' ,
GIVEN_VALUE '"|"' ,
SP_NUMBER '"|"' ,
MORELATETO_MT_FLAG '"|"' ,

RESERVE_1 '"|"' ,
RESERVE_2 '"|"' ,
RESERVE_3 '"|"' ,
RESERVE_4 '"|"' ,
RESERVE_5 '"|"' ,
RESERVE_6 '"|"' ,
bill_date '"|"' ,
ods_date '\x0a'
)
from '/bk_syb/syb_bak01/InterfaceFile/ODS_G_PPS_SMS_CDR_20061018.out'
ESCAPES OFF QUOTES OFF  WITH CHECKPOINT ON ON FILE ERROR ROLLBACK;

结果出现如下提示错误:number of unique values exceeded for index.
ODS_G_PPS_SMS_CDR_SERVICE_TYPE_lf 10000

论坛徽章:
0
2 [报告]
发表于 2006-10-19 14:12 |只看该作者
建表时iq unique值小了,load进来不同值超出了索引的限制。
数据load应该不会失败

论坛徽章:
0
3 [报告]
发表于 2006-10-19 15:45 |只看该作者
我查看了LF索引的聚合度是小于1500的,在表ODS_G_PPS_CDR的字段SERVICE_TYPE的不同值我统计了一下有2027个,这个值是8月份的数据,是已经成功插入到表中的。那么这个也应该报错呀!
我用sp_iqcolumn查看了表的字段属性,其中针对SERVICE_TYPE是这样的:
domain_name    width   scale   null    cardinality  est_cardinality
   varchar                    1         0           Y        8536              0
我想问问cardinality是指什么?est_cardinality呢?

论坛徽章:
0
4 [报告]
发表于 2006-10-19 16:29 |只看该作者
LF索引的聚合度是小于1500的

这个是如何看得?

[ 本帖最后由 action929 于 2006-10-19 16:58 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-10-19 17:14 |只看该作者
看的一些资料上提到:
“此索引【LF】适用于级数较低的情况 (distinct值<1500)”
那么如果查看iq unique呢?

论坛徽章:
0
6 [报告]
发表于 2006-10-19 17:18 |只看该作者
这次加载的不同值 超过了10000,可以把 lf 索引 改称HG 索引吧

论坛徽章:
0
7 [报告]
发表于 2006-10-19 17:31 |只看该作者
做了个测试,发现当列中的不同值超过10000的时候连lf索引都创建不了,看样子你用不了lf索引了

论坛徽章:
0
8 [报告]
发表于 2006-10-19 17:41 |只看该作者
你指的10000是在建立表的时候的iq unique的值吗?
因为表不是我建的。我不是很清楚表中字段的iq unique当初设的大小,但是在字段属性中的cardinality应该就是指现在表示不同值的个数吧。但是如何查看当初设置的不同值的个数呢?
还有就是lf是适合于不同值小于1500的,那么它的上限是多少呢?每种索引是否都有个上限,还是部分有?

论坛徽章:
0
9 [报告]
发表于 2006-10-19 18:05 |只看该作者
更据我的理解 iq unique 是用在 FP 索引上的,应为没个列默认都是FP索引,iq unique的值只是决定了存放FP索引的字节的大小,就算超过了也不会导致load失败。
IQ UNIQUE constraint defines the approximate cardinality of a
column
&#1048698; Used for internal FP index storage optimization
&#1048698; <256 values - Single-byte lookup table (1-byte FP index)
&#1048698; >255 and <65537 - Two-byte lookup table (2-byte FP index)
&#1048698; Default value is 65,537


此索引【LF】适用于级数较低的情况  时说如果不同值不超过1500 推荐用lf索引,至于这个 10000 的限制不知道是不是sybase iq内部的限制,这个我没有找到资料,但是这个字段上再建lf索引不太合适了,你可以删了它,然后用查询计划看看 iq 推荐你用什么索引

论坛徽章:
0
10 [报告]
发表于 2011-07-12 15:09 |只看该作者
我也是创建了一个表,建立了LF索引,循环插入递增数据,发现20000行都没事儿。搞不明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP