如何高效查询一个表中相同字段的条数
1.select (select count(1) from address c where c.alladdress=t.alladdress) AS REPEATERCOUNT ,
t.* from address;
数据量有5W多条,这样查询用时0.89s,放在另外一台机器上用了2秒左右,用函数查询重复的条数速度也不是很理想
2.
select t.*,
CASE when REGEXP_INSTR(T.road,'[[:punct:]|[:digit:]|[a-z]|[A-Z]]')>0
then 1 else 0 END)as ISDIST
from address
用正则判断road是否符合要求,在自己机器上用时0.5秒,放在另外一台机器上用时0.5-5s之间,不稳定
(注:另外一台机器性能和我的机器差不多!)
请指点一下,先谢谢了!
------解决方案--------------------不懂,但也想知道,所以帮顶!~~
------解决方案--------------------学习ing 坐等高手
------解决方案--------------------这个问题很复杂的
机器性能和你差不多只是你认为,或者你看到的全新机器参数,实际上由于使用维护的区别或许还是有很大区别的;
抛开机器不说,你的数据库和他的数据库也不一样,我指的是你内部结构,比如你的表空间不足了,buffer不够大了,数据块随着使用不连续了等等;
再还有建表的时候是不是他有索引而你没有之类的细节
------解决方案-------------------- 即使2台同样的电脑 连接一个库运行一个sql也会有时间差距 和我昨天一样 查询几百条数据 差距可能会达到几毫秒
------解决方案--------------------其实这个还要看你机子是否有你这个SQL的缓存查询,如果有的话,速度会快点。。
------解决方案--------------------oracle的参数配置,数据的存储结构,统计信息是否准确,这些都会影响执行效率
------解决方案--------------------经过测试这样写,效率要高很多
select c.cnt ,t.*
from t_01 t,
(select colname,count(1) as cnt from t_01 group by colname) c
where t.colname= c.colname;