数据库是sqlserver 7.0
里面有表含10万条数据,某要检索字段没有索引,现在在vb中用“包含”搜索这个字段

select * from tableA where fieldA like "%fff%"
速度不够快,能有办法提高一下吗

解决方案 »

  1.   

    select * from tableA where fieldA like "_aa_"
    it so quick
    I was test it
      

  2.   

    (1)下面的查询也将导致全表扫描:
    select id from t where name like '%abc%',即使你在name列建了索引也没有用。如果条件许可,尽量采用类似于 like 'abc%',或者 like '%abc',这样SQL将只扫描以abc开头(结尾)的字段。如果条件不许可,而且数据量又大、又经常用到的话,LZ可以考虑全文检索。
    (2)楼上兄弟的“ "_aa_"是错的,“_”只能检索到一个字符,可以在查询分析器里试试。
      

  3.   

    select 字段1,字段2 from tableA where fieldA like "%fff%"
    1。需要哪个写哪个
    2。fieldA 建立索引
      

  4.   

    谢谢各位
    那么单纯的读出符合条件的数据的数量有办法快点吗
    select count(*) from tableA where fieldA like "%fff%"
    原来sql语句是这样的
      

  5.   


    (1)在fieldA列上建索引,但正如上所说,如果你的查询语句是 like "%fff%",因为前后都有%,因此该查询将导致全表扫描,索引在此查询中起不到作用。(2)如果一定要优化你给出的这条SQL语句,假如fieldA没有限制NOT NULL(也就是说有可能为空值时),倒可以这样做试试:
    select count(fieldA) from tableA where fieldA like "%fff%",这样由于为NULL的值不做统计,因此速度相对会快些。