【发布时间】:2021-12-27 00:33:18
【问题描述】:
我们正在使用列字符串对数据库表进行通配符搜索。在列上创建非聚集索引是否有助于通配符搜索?这会提高性能吗?
CREATE TABLE [dbo].[Product](
[ProductId] [int] NOT NULL,
[ProductName] [varchar](250) NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
...
CONSTRAINT [PK_ProductId] PRIMARY KEY CLUSTERED
(
[ProductId] ASC
)
)
建议索引:
CREATE NONCLUSTERED INDEX [IX_Product_ProductName] ON [dbo].[Product] [ProductName])
对于这个查询
select * from dbo.Product where ProductName like '%furniture%'
当前使用 Microsoft SQL Server 2019。
【问题讨论】:
-
没有。如果您提供第一个字符,则(通常)将使用索引,例如
like 'X%furniture%' -
试试
charindex与通配符,看看你是否能发现任何性能差异 -
投反对票并不代表您个人。但是编写高效的 SQL 和设计高效的数据库是一个很大的话题,不太适合 SO 这样的简单技术问答网站。
标签: sql sql-server tsql indexing sql-server-2019