求大神帮忙解决查询效率问题,100w+数据分页查询很慢,SQL如下:select top 100 field.id,name,inter.iflag,sort_id,fdate from larfield field, larinter inter where field.id>(select isnull(MAX(id),0) from (select top 0 field.id from larfield field, larinter inter where field.id=inter.id and field.name like '%合同%' order by field.id) a) and field.id=inter.id and field.name like '%合同%' order by field.id
说明一下:这几个列都为非聚集索引,上面的SQL去掉联合查询也很慢。并且,还有个问题,在一样的数据库,在测试服务器查询稍快点,需5秒左右。在正式服务器上却需要15秒。
------解决思路----------------------
SELECT id,name,iflag,sort_id,fdate
FROM (
select field.id,name,inter.iflag,sort_id,fdate,
ROW_NUMBER() OVER(ORDER BY field.id) rn
from larfield field,
larinter inter
where field.id=inter.id
and field.name like '%合同%'
) t
WHERE rn BETWEEN 1 AND 100
这个可能会快点,至少like '%合同%'只要做一次。
不过数据量在那里,快不了多少。
------解决思路----------------------
关键是 name like '%合同%' 需要全表检索,大数据这样的操作只能慢了。