select * from View_data t where ([CompanyName] like '%limited' or [Email] like '%cn') and not exists(select 1 from View_data where CompanyName=t.CompanyName and [AutoID] >t.[AutoID])这条数据执行的速度超慢...有没有快一点的写法就是 一个库里存有公司的产品信息 一条数据是由公司加产品组成
现在要根据[CompanyName] like '%limited' or [Email] like '%cn' 检索出满足条件的数据
因为公司对应了N个产品 所以简单的SELECT出来有很多重复的公司信息 现在的要求是只要不重复的公司信息
所以就用了上面的语句 但是执行时间超长... 有没有什么快速一点的查询方法

解决方案 »

  1.   


    select * from View_data t where ([CompanyName] like '%limited' or [Email] like '%cn') and not exists(select 1 from View_data where CompanyName=t.CompanyName and [AutoID] >t.[AutoID]) 你使用的是like本来效率就不怎么样,在CompanyName上都建上索引吧。
      

  2.   

    [CompanyName] like '%limited' or [Email] like '%cn'这样的查询索引也用不到,只能考虑全文索引了
      

  3.   

    我这种的一般都不写后面那段,用的max(列名)select 列1,max(列2) from View_data t where ([CompanyName] like '%limited' or [Email] like '%cn') group by 列1至于快慢,没深究过,你试试看。
      

  4.   

    or连接的字段也用不了索引 可以考虑用union all  代替试下 
      

  5.   

    ([CompanyName] like '%limited' or [Email] like '%cn')
    这句应该可以优化
    CompanyName和Email列各加一个REVERSE的计算列,计算列上加索引,然后把上面那个条件改成 LIKE 'NC%'这样的形式
      

  6.   


    select * from View_data t where ([CompanyName] like '%limited' or [Email] like '%cn') 
    and [AutoID]= (select max([AutoID]) from  View_data  where   [CompanyName] like '%limited' or [Email] like '%cn' and CompanyName=t.CompanyName)
      

  7.   

    select * from View_data t where ([CompanyName] like '%limited' or [Email] like '%cn') and not exists(select 1 from View_data where ([CompanyName] like '%limited' or [Email] like '%cn') and CompanyName=t.CompanyName and [AutoID] >t.[AutoID])