如何解决按索引使用和搜索
假设我有这张表,其索引如下:
CREATE TABLE [dbo].[Jobs]
(
[Id] BIGINT NOT NULL PRIMARY KEY IDENTITY(1,1),[Type] SMALLINT NOT NULL,[Path] NVARCHAR(MAX),[Name] VARCHAR(256),)
GO
CREATE INDEX [IX_Jobs_Name_Type] ON [dbo].[Jobs] ([Name],[Type])
哪个查询会有更好的性能:
1。
UPDATE TOP((@JobCount + 3) / 4 )
Jobs WITH (ROWLOCK,READPAST)
SET [Name] = @NName
WHERE [Name] IS NULL AND (Type = 1 OR Type = 4)
UPDATE TOP((@JobCount + 3) / 8 )
Jobs WITH (ROWLOCK,READPAST)
SET [Name] = @NName
WHERE [Name] IS NULL AND Type = 1
UPDATE TOP((@JobCount + 3) / 8 )
Jobs WITH (ROWLOCK,READPAST)
SET [Name] = @NName
WHERE [Name] IS NULL AND Type = 4
在这种情况下,请忽略更新的行数的正确性, 由于索引的缘故,使用“或”对类型进行一次搜索是否会比2个单独的查询效率低?
解决方法
您当然应该尝试使用数据库,但是在OR
情况下,数据库应该能够应用索引。最好写成:
WHERE [Name] IS NULL AND Type IN (1,4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。