select top 12 * from firm_bx where f_id>(
select max(f_id) from (
select top 7188 f_id from firm_bx where firm_name like '%北京%' or firm_name1 like '%北京%' or register_address like '%北京%' or register_address1 like '%北京%' or register_postalcode like '%北京%' or address like '%北京%' or address1 like '%北京%' or postcode like '%北京%' or leader like '%北京%' or contactman like '%北京%' or tele like '%北京%' or fax like '%北京%' or email like '%北京%' Order By f_id asc
) as a

and  
(firm_name like '%北京%' or firm_name1 like '%北京%' or register_address like '%北京%' or register_address1 like '%北京%' or register_postalcode like '%北京%' or address like '%北京%' or address1 like '%北京%' or postcode like '%北京%' or leader like '%北京%' or contactman like '%北京%' or tele like '%北京%' or fax like '%北京%' or email like '%北京%') 
Order By f_id asc

解决方案 »

  1.   

    我用asp.net用存储过程来分页,但数据库有上百万条记录,如果我什么条件都不输那查询很快,如果我一输入模糊查询就越往后翻页越慢,请教你们这种查询有什么好方法吗?(如果没有查询条件是很快).
    我把我sql语句贴出:select top 12 * from firm_bx where f_id>(
    select max(f_id) from (
    select top 7188 f_id from firm_bx where firm_name like '%北京%' or firm_name1 like '%北京%' or register_address like '%北京%' or register_address1 like '%北京%' or register_postalcode like '%北京%' or address like '%北京%' or address1 like '%北京%' or postcode like '%北京%' or leader like '%北京%' or contactman like '%北京%' or tele like '%北京%' or fax like '%北京%' or email like '%北京%' Order By f_id asc
    ) as a

    and  
    (firm_name like '%北京%' or firm_name1 like '%北京%' or register_address like '%北京%' or register_address1 like '%北京%' or register_postalcode like '%北京%' or address like '%北京%' or address1 like '%北京%' or postcode like '%北京%' or leader like '%北京%' or contactman like '%北京%' or tele like '%北京%' or fax like '%北京%' or email like '%北京%') 
    Order By f_id asc
      

  2.   

    我是用存储过程,这只是把储存过程执行的sql打印了出来.我这就是一个表,如果没有查询条件上百万条记录都没有任何影响,一旦加了复杂的模糊查询条件就慢了
      

  3.   

    条件:
    firm_name+register_address like '%北京%'

    firm_name like '%北京%' or register_address like '%北京%'
    是不一样吗?查出来的结果不一样