我不记得如何添加索引以便更快地从表中查找。我有一个主键,但我希望有一个索引以便按组件代码更快地查找行。为了更快地阅读:
select * from prices where ComponentCode like '%something%'
看看脚本的最后两行
我哪里做错了?
CREATE TABLE [dbo].[Prices] (
Id int IDENTITY(1,1) NOT NULL,
ComponentCode varchar(255),
Description VARCHAR(255),
PriceUnit float,
Price float
);
GO
ALTER TABLE [dbo].[Prices]
ADD CONSTRAINT [PK_Prices]
PRIMARY KEY CLUSTERED ([Id] ASC);
GO
CREATE CLUSTERED INDEX CI_Prices ON [dbo].[Prices] (ComponentCode);
GO
2条答案
按热度按时间qrjkbowd1#
你可以把索引看作是一个排序树,它保存着列的值和指向它们来源行的指针。这提高了查询的速度,因为搜索排序树比搜索未排序列表更快。
但是,在这个查询中,您要查找值的中间的子字符串(因为在右操作数的开头有一个
%
通配符),在这种情况下,ComponentCode
的值存储在排序索引中的事实对您没有帮助,数据库只是忽略了索引。s1ag04yj2#
就像这样:
但正如其他人所说,它不是通配符搜索的灵丹妙药。