急:两个几百万的表关联查询,如何提高速度? 尽量把Where后面给出的条件所要用的字段建立索引,避免使用like, 避免在where中使用is null或者is not null,另外,先要限制从两张表取的数据,最后才写两表关联的字段(两表连接的条件) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 强制索引;少用IN,用EXISTS;可以的话,多建临时表;……升级硬件 升级硬件是不可能了。关联索引已经建立,查询要用到的字段也都做了索引,没有IN、LIKE、IsNULL等。现在主要是查询返回的数据量很大,造成查询经常超时。 技术上提高查询办法:建立合适的索引,避免用影响查询速度的条件,比如in、%等,如果可以作partition的,就作partition,尽量分段查询。两个大表关联查询,属于业务问题:数据量巨大,本身就是很费时间的事。像移动、电信,基本上不给打印1年的帐单,就是避免数度太慢影响业务。 关键看你做什么样的关联操作,where条件很重要(是否用了in/not in,like等条件),还有是否用了union(因为union all 的执行要比union快很多) 我的优化方法:1:关键字建立索引2:ID采用LONG型而不采用varchar,对于海量数据的查询可以提速很多其它的,有待楼下进一步提供 :(只能建议用户按条件分批查询了。查询返回的记录集太大就会出现snapshot too old。 MERGE INTO 问题 OCI update ..... (比较更新)! SQL排序!!!太怪异了!! 关于oracle中触发器的疑惑 高手,请问有关于数据库优化问题! 问一个很简单的数值取整操作 在客户端连接ORACLE服务双机中的B服务器时出现General SQL error. varchar2类型最长能存储多大?如果超过最大值该怎么办呢? 求助:oracle对特定字段查询特别慢 oracle 大型数据查询速度问题?详情请入内 怎么导Oracle数据库中的表结,我 不想要数据!
少用IN,用EXISTS;
可以的话,多建临时表;
……升级硬件
关联索引已经建立,查询要用到的字段也都做了索引,没有IN、LIKE、IsNULL等。现在主要是查询返回的数据量很大,造成查询经常超时。
两个大表关联查询,属于业务问题:数据量巨大,本身就是很费时间的事。像移动、电信,基本上不给打印1年的帐单,就是避免数度太慢影响业务。
1:关键字建立索引
2:ID采用LONG型而不采用varchar,对于海量数据的查询可以提速很多
其它的,有待楼下进一步提供
只能建议用户按条件分批查询了。查询返回的记录集太大就会出现snapshot too old。