Chinaunix

标题: 类型自动转换问题 [打印本页]

作者: iceiceberg    时间: 2006-10-11 17:44
标题: 类型自动转换问题
那天在ids10上发现这么个问题:
有一个char型字段,里面存的是电话号码。对这个字段建了索引,并运行了update statistics low。
当使用where phonenum='13810334343'时,会使用索引;
当使用where phonenum=13810334343时,却只能用squencial scan...
按说IDS是可以根据字段的类型把数字自动转换成char型的(要不然也不会查到结果了),但是为什么查询算法会不同呢?

大家遇到过这种情况吗?有谁知道原因吗?谢谢!
作者: wenlq    时间: 2006-10-12 08:31
IDS 7.3上也是这样的。
认为它缺省做了 atol( col ) = 数值,这时就只能seq scan了

你把 常量转换为串 就能用到索引。如 col =  123 || ""

虽说数据库会做类型转换,看来还是尽量匹配的好。
作者: iceiceberg    时间: 2006-10-12 10:24
哦~~这么说,所谓的“自动转换”是对列内容进行了转换,而不是常量值!我刚好想反了……
可是这样不会显得有些笨吗?每条数据都做转换……
谢谢wenlq




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2