【发布时间】:2009-07-31 08:19:12
【问题描述】:
运行以下查询 (SQL Server 2000),执行计划显示它使用了索引查找,而 Profiler 显示它正在执行 71 次读取,持续时间为 0。
select top 1 id from table where name = '0010000546163' order by id desc
与以下情况相比,使用具有 8500 次读取和大约一秒的持续时间的索引扫描。
declare @p varchar(20)
select @p = '0010000546163'
select top 1 id from table where name = @p order by id desc
为什么执行计划不同?有没有办法改变第二种寻找的方法?
谢谢
编辑
表格看起来像
CREATE TABLE [table] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [varchar] (13) COLLATE Latin1_General_CI_AS NOT NULL)
Id 是主聚集键 Name 上有一个非唯一索引,id/name 上有一个唯一复合索引 还有其他列 - 为简洁起见将它们省略
【问题讨论】:
-
请问什么数据类型/模式?
标签: tsql sql-server-2000