以下查询需要大约 10 秒才能在具有 12k 条记录的表上完成
select top (5) *
from "Physician"
where "id" = 1 or contains("lastName", '"a*"')
Run Code Online (Sandbox Code Playgroud)
但是,如果我将 where 子句更改为
where "id" = 1
Run Code Online (Sandbox Code Playgroud)
或者
where contains("lastName", '"a*"')
Run Code Online (Sandbox Code Playgroud)
它会立即返回。
两列都被索引,lastName 列也被全文索引。
CREATE TABLE Physician
(
id int identity NOT NULL,
firstName nvarchar(100) NOT NULL,
lastName nvarchar(100) NOT NULL
);
ALTER TABLE Physician
ADD CONSTRAINT Physician_PK
PRIMARY KEY CLUSTERED (id);
CREATE NONCLUSTERED INDEX Physician_IX2
ON Physician (firstName ASC);
CREATE NONCLUSTERED INDEX Physician_IX3
ON Physician (lastName ASC);
CREATE FULLTEXT INDEX
ON …Run Code Online (Sandbox Code Playgroud)