补充一下
SQL Server 2000 + SP4

解决方案 »

  1.   

    有遇到这样的情况, 因为这是查询优化器的选择问题, 所以不好控制.一般用两种方法解决:
    1. 强制指定索引
    Declare @UserName varchar(128)
    SET @UserName='SQLSERVER'
    Select * from User Where UserName=@UserName WITH(INDEX=你想使用的索引名)
      

  2.   

    2. 使用JOIN
    经过测试, 类似下面的方法是可行的DECLARE @UserName TABLE(UserName varchar(128) PRIMARY KEY)
    INSERT @UserName VALUES('SQLSERVER')
    Select A.* from User A, @UserName B
    WHERE A.UserName=B.UserName
      

  3.   

    谢谢邹建大哥的赐教,我找到问题了,分享一下,这里是我的问题
    我查询的时候设的参数的数据类型是sysname,其实就是varchar(256)
    我定义的字段的长度是varchar(128).
    原因就处在这里,SQL Server 在设定查询计划的时候把sysname当成不同于varchar(128)的数据类型,所以产生了索引扫描。又学到了新东西,还是出点问题好啊~~~