SQL Server 添加索引以加快搜索速度

mgdq6dx1  于 2023-01-08  发布在  其他
关注(0)|答案(2)|浏览(205)

我不记得如何添加索引以便更快地从表中查找。我有一个主键,但我希望有一个索引以便按组件代码更快地查找行。为了更快地阅读:

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
qrjkbowd

qrjkbowd1#

你可以把索引看作是一个排序树,它保存着列的值和指向它们来源行的指针。这提高了查询的速度,因为搜索排序树比搜索未排序列表更快。
但是,在这个查询中,您要查找值的中间的子字符串(因为在右操作数的开头有一个%通配符),在这种情况下,ComponentCode的值存储在排序索引中的事实对您没有帮助,数据库只是忽略了索引。

s1ag04yj

s1ag04yj2#

就像这样:

CREATE INDEX IX_Prices_ComponentCode ON [dbo].[Prices] (ComponentCode);

但正如其他人所说,它不是通配符搜索的灵丹妙药。

相关问题