W
wsn
Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有个表大概100多万条数据,有个字段id是存放身份证,已经为其建立索引,开始时
候都是18位的,有些人他自己的身份证还没有去更新,但是数据库里的身份证字段值
就已经按照算法为其调整到18位了,后来由于种种原因,这个字段里又混进了许多15位
的值,这样查询的时候要求 输入15位或18位都能找到相应的记录。
如果查询时候输入的条件和表里的值相符的话,那查询速度很快,但是若需要调整位数
比如 把18位的年份“19”和最末尾的校验位去掉在和数据库里的字段截取成15位长度以后的
值相比较就很慢,这个时候是用两个substr函数连一块的,又变成了全表扫描,速度实在不能忍受。
因为现实中身份证存在大量的重号现象,
因此我现在的做法只是把输入的值和字段里的值做 18位到15的转换 再比较。不知道各位在遇到类似问题的时候
是如何处理的。
另外,分配给我的操作权限太小,连BDA SUDIO都打不开,只能在plus里做select,我估计不会允许去改动里面的结构。
请指点迷津。 ( B/S , asp )
候都是18位的,有些人他自己的身份证还没有去更新,但是数据库里的身份证字段值
就已经按照算法为其调整到18位了,后来由于种种原因,这个字段里又混进了许多15位
的值,这样查询的时候要求 输入15位或18位都能找到相应的记录。
如果查询时候输入的条件和表里的值相符的话,那查询速度很快,但是若需要调整位数
比如 把18位的年份“19”和最末尾的校验位去掉在和数据库里的字段截取成15位长度以后的
值相比较就很慢,这个时候是用两个substr函数连一块的,又变成了全表扫描,速度实在不能忍受。
因为现实中身份证存在大量的重号现象,
因此我现在的做法只是把输入的值和字段里的值做 18位到15的转换 再比较。不知道各位在遇到类似问题的时候
是如何处理的。
另外,分配给我的操作权限太小,连BDA SUDIO都打不开,只能在plus里做select,我估计不会允许去改动里面的结构。
请指点迷津。 ( B/S , asp )