sql server中的索引是怎么使用的?
我的表名是product,里面的字段是productid(自动编号),productname(产品名称)
我想查询:select * from product where productname like '%abc%'
由于数据量大,这样的查询花了很长的时间。不知道索引是如何建立的?如何使用?如何比较普通的查询和使用索引后的查询运行的结果?
那位朋友教一下。

解决方案 »

  1.   

    like 模糊查询及时建立索引也效果不明显啊!
      

  2.   

    create index index_product  on product ([productname])
      

  3.   

    有关索引各方面的讲述:SQL Server使用索引实现数据访问优化
      

  4.   

    模糊搜索这里是like对索引利用不高(但不代表没有用的),一般来说还是让系统自动决定是否用(用什么索引)但是你可以在select 后用with 索引名来人工测试你的sql语句对索引的利用(通过执行计划)情况
      

  5.   

    select * from product where productname like '%abc%'这样用,索引不起作用。select * from product where productname like 'abc%'这样用,索引才起作用。不过你如果需求是:like '%abc%',那索引就用不到了。
      

  6.   

    格式:CREATE INDEX mycolumn_index ON mytable (myclumn)
    索引一般建立在表的频繁查询的字段上,可以提高查询速度,但会影响更新速度
      

  7.   

    下面看会了,你就全明白了:
    如何实现优化查询. 
    http://topic.csdn.net/u/20080416/08/24b62a73-ab5a-4927-97af-81e7e790445d.html 
    索引的基本原理,以及数据是如何被访问的
    http://topic.csdn.net/u/20080521/15/c5ee330e-596d-4957-8032-5bb9a80a9218.html  
      

  8.   

    如果是使用like '%abc%' 索引是不起作用的,但是如果是like 'abc%'使用索引是可以提高速度的。
      

  9.   

    索引最好不要建立在varchar这样的字段上,最好建立在id类型的数据上
      

  10.   

    如果想使用索引的话,必须指定关键字的最左边部分(如果是字符串的话,必须至少指定第一个字符的值,如果是多列关键字,必须至少给出第一列的取值),否则都会进行整表扫描。另外,能不能用到索引,还取决于表的存储结构。如果是Hash结构的话,必须给出关键字的完整取值,模式匹配和部分关键字是不支持的。
      

  11.   

    如果是这种:select * from product where productname like 'abc%'
    索引也是:create index index_product  on product ([productname])这样建的吗?
    那我如何看使用前,和使用后的效果?这样好比较
      

  12.   

    --查看SQL语句的执行时间:将执行每个语句时采取的步骤作为行集返回,通过层次结构树的形式展示出来set statistics profile on
    set statistics io on
    set statistics time on
    go
    --<这里写上你的语句...>
    go
    set statistics profile off
    set statistics io off
    set statistics time off
      

  13.   

    用like '%a%'这种方式,是用不了索引的。用用like 'a%'这种方式,就可以用上索引