【问题标题】:Adding index for faster search添加索引以加快搜索速度
【发布时间】:2023-01-05 23:36:40
【问题描述】:

我不记得如何添加索引以便从表中更快地查找。 我有一个主键,但我想要一个索引,以便通过组件代码更快地查找行。 快速阅读: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

【问题讨论】:

  • 您真的需要前导通配符吗? ('%something%') 如果是这样,B 树索引的用途将受到限制(只是给你一些更窄的扫描范围)

标签: sql-server


【解决方案1】:

您可以将索引视为一棵排序树,它保存列的值和指向它们来自的行的指针。这提高了查询速度,因为搜索排序树比搜索未排序列表更快。

但是,在此查询中,您要查找的是中间值的值(因为您在右操作数的开头有一个 % 通配符)。在这种情况下,ComponentCode 的值存储在排序索引中这一事实对您没有帮助,数据库只是忽略索引。

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2022-01-25
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多