传统的分页SQL语句,查询将近10s左右,如何优化
11 个解决方案
#1
可以根据常见的条件,做分区表;
#2
已经根据入库时间创建了分区,但由于条件太多,所以,创建分区之后,效果不是很大
#3
方便贴出你的分区情况和查询语句吗?
#4
select * from(
select a.*,rownum r from(
select name,type,object,time,desc,result,ip from log)
<where>
查询语句
<where>
order by time desc) a where rownum <#{end}
) where r>#{begin}
分区是按time 每月分区
select a.*,rownum r from(
select name,type,object,time,desc,result,ip from log)
<where>
查询语句
<where>
order by time desc) a where rownum <#{end}
) where r>#{begin}
分区是按time 每月分区
#5
你的查询条件,是什么呢 ?
#6
所有的字段 name,type,object,time,desc,result,ip 模糊查询
#7
有时间区间的条件吗?如果没有的话,这个估计,就不好优化了;建立了索引也用不动的;
#8
没有,时间是不定的,可以输入任何时间段
#9
给他们一个默认时间,让他们强制用时间查,这样走分区表
#10
这个是要匹配业务的。
依据时间做分区,查询条件里默认匹配时间区间。
预判查询结果量,太大时,前台或者提醒,或者禁止。
依据时间做分区,查询条件里默认匹配时间区间。
预判查询结果量,太大时,前台或者提醒,或者禁止。
#11
时间作为必选条件(缺省值用最常用的,比如最近5分钟、1小时等等),同时考虑结合分区(按月)情况限制可查询时间的长度(比如1个月、2个月或者1年等),用户如果一定要放到很宽,那也只能慢了。
索引时间在第一字段,其他的模糊查询索引很难用的起来
索引时间在第一字段,其他的模糊查询索引很难用的起来
#1
可以根据常见的条件,做分区表;
#2
已经根据入库时间创建了分区,但由于条件太多,所以,创建分区之后,效果不是很大
#3
方便贴出你的分区情况和查询语句吗?
#4
select * from(
select a.*,rownum r from(
select name,type,object,time,desc,result,ip from log)
<where>
查询语句
<where>
order by time desc) a where rownum <#{end}
) where r>#{begin}
分区是按time 每月分区
select a.*,rownum r from(
select name,type,object,time,desc,result,ip from log)
<where>
查询语句
<where>
order by time desc) a where rownum <#{end}
) where r>#{begin}
分区是按time 每月分区
#5
你的查询条件,是什么呢 ?
#6
所有的字段 name,type,object,time,desc,result,ip 模糊查询
#7
有时间区间的条件吗?如果没有的话,这个估计,就不好优化了;建立了索引也用不动的;
#8
没有,时间是不定的,可以输入任何时间段
#9
给他们一个默认时间,让他们强制用时间查,这样走分区表
#10
这个是要匹配业务的。
依据时间做分区,查询条件里默认匹配时间区间。
预判查询结果量,太大时,前台或者提醒,或者禁止。
依据时间做分区,查询条件里默认匹配时间区间。
预判查询结果量,太大时,前台或者提醒,或者禁止。
#11
时间作为必选条件(缺省值用最常用的,比如最近5分钟、1小时等等),同时考虑结合分区(按月)情况限制可查询时间的长度(比如1个月、2个月或者1年等),用户如果一定要放到很宽,那也只能慢了。
索引时间在第一字段,其他的模糊查询索引很难用的起来
索引时间在第一字段,其他的模糊查询索引很难用的起来