Getting a query to index seek (rather than scan)

前端 未结 2 1602
面向向阳花
面向向阳花 2020-12-07 06:06

Running the following query (SQL Server 2000) the execution plan shows that it used an index seek and Profiler shows it\'s doing 71 reads with a duration of 0.



        
相关标签:
2条回答
  • 2020-12-07 06:12

    If the name column is NVARCHAR then u need your parameter to be also of the same type. It should then pick it up by index seek.

    declare @p nvarchar(20)
    select @p = N'0010000546163'
    select top 1 id from table where name = @p order by id desc
    
    0 讨论(0)
  • 2020-12-07 06:32

    Now you've added the schema, please try this. SQL Server treats length differences as different data types and will convert the varchar(13) column to match the varchar(20) variable

    declare @p varchar(13)
    

    If not, what about collation coercien? Is the DB or server different to the column?

    declare @p varchar(13) COLLATE Latin1_General_CI_AS NOT NULL
    

    If not, add this before and post results

    SET SHOWPLAN_TEXT ON
    GO
    
    0 讨论(0)
提交回复
热议问题