struts2 spring ibatIS 框架设计的平台,数据库中目前有大概4000万的数据,目前的查询效率非常的慢。

<!--查询短信日志结果集--><resultMapclass="com.box.module.operation.dto.SmsQueryDTO"id="smsQuer... <!-- 查询短信日志结果集 -->

<resultMap class="com.box.module.operation.dto.SmsQueryDTO"
id="smsQueryDTOMap">
<result property="smsLogId" column="PKID" />
<result property="typeId" column="SMS_MESSAGE_TYPE" />
<result property="param" column="PARAM" />
<result property="intime" column="INTIME" />
<result property="mobileNO" column="MOBILE_NO" />
<result property="msgId" column="MSG_ID" />
<result property="smsStatus" column="SMS_STATUS" />
<result property="partPos" column="PART_POS" />
<result property="busnumber" column="BUSNUMBER" />
<result property="srcdepartment" column="SRCDEPARTMENT" />
<result property="conPkid" column="CON_PKID" />
<result property="identitycard" column="IDENTITYCARD" />
<result property="busTypeCode" column="bus_type_code" />
<result property="sendname" column="SEND_NAME"/>

</resultMap>
<!-- 查询短信日志 -->
<select id="querySms" resultMap="smsQueryDTOMap"
parameterClass="java.util.HashMap">
<![CDATA[
SELECT * FROM ( SELECT T.*, ROWNUM RN FROM (
select sca.pkid,
sca.sms_message_type,
sca.param,
sca.intime,
sca.mobile_no,
sca.msg_id,
sca.sms_status,
sca.part_pos,
sca.busnumber,
sca.srcdepartment,
sca.con_pkid,
sca.identitycard,
sca.send_name,
to_number(sca.bus_type_code) bus_type_code
FROM SMS_CONFIRM_ALL sca
WHERE ((1=1
]]>

<![CDATA[ )) ]]>

<isNotNull>
<isNotEmpty property="mobile" prepend="and">
sca.mobile_no like '%$mobile$%'
</isNotEmpty>
</isNotNull>
<isNotNull>
<isNotEmpty property="busnumber" prepend="and">
sca.busnumber like upper('%$busnumber$%')
</isNotEmpty>
</isNotNull>
<isNotNull>
<isNotEmpty property="busTypeCode" prepend="and">
sca.bus_type_code = $busTypeCode$
</isNotEmpty>
</isNotNull>
<isNotNull>
<isNotEmpty property="startTime" prepend="and">
sca.intime >= to_date(#startTime#,'yyyy-mm-dd')
</isNotEmpty>
</isNotNull>
<isNotNull>
<isNotEmpty property="endTime" prepend="and">
<![CDATA[ sca.intime <= to_date(#endTime#,'yyyy-mm-dd')]]>
</isNotEmpty>
</isNotNull>
<![CDATA[
order by sca.pkid desc
) T
WHERE ROWNUM <=#start#+#limit#
)
WHERE RN > #start#
]]>
</select>
展开
 我来答
manyfaces
2011-05-10 · TA获得超过1068个赞
知道小有建树答主
回答量:1808
采纳率:0%
帮助的人:1001万
展开全部
只能做个折中,考虑对短信做最近3个月查询。3个月外放在另外一个表(或者另外一台服务器)。基本上查询也就集中在前几个月了。这样数据就少了。数据多怎么查怎么索引都是慢的
暗夜de忧伤
2011-05-10 · TA获得超过1936个赞
知道小有建树答主
回答量:995
采纳率:75%
帮助的人:1000万
展开全部
除非不得已尽量不要SELECT * 查询全部,只需要查询关键数据即可
尝试数据库集群,或者选用性能优秀的Oracle
使用一些快速的数据库连接池,比如号称比其它连接池快10倍以上的的bonecp
视图、存储过程等等
楼上的建议也是不错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laijy1984
2011-05-10
知道答主
回答量:15
采纳率:0%
帮助的人:5.8万
展开全部
4000W的数据太多了,一次要查出来的话时间肯定是长的,可以考虑按索引分类查多次试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式