Tsql 使用计算字段T-SQL使用索引

Tsql 使用计算字段T-SQL使用索引,tsql,Tsql,我们确实有一个非常频繁运行的查询,但由于我们在列的两侧使用函数,它没有进行索引查找,所以这个查询是最昂贵的查询之一。我有什么办法可以使这个专栏具有计算性吗 SELECT TOP 1 column1 FROM table1 WHERE replace(replace(replace(column2, char(10), ''), char(13), ''), ' ', '') = replace(replace(replace(@var1, char(10), ''), char(13

我们确实有一个非常频繁运行的查询,但由于我们在列的两侧使用函数,它没有进行索引查找,所以这个查询是最昂贵的查询之一。我有什么办法可以使这个专栏具有计算性吗

SELECT TOP 1 column1
FROM table1
WHERE replace(replace(replace(column2, char(10), ''), char(13), ''), ' ', '') =
      replace(replace(replace(@var1, char(10), ''), char(13), ''), ' ', '') 

要扩展dfundako的注释,可以对持久化计算列创建索引,如下所示:

CREATE TABLE table1 (
    column1 INT,
    column2 VARCHAR(50),
    column3 AS REPLACE(replace(replace(column2, char(10), ''), char(13), ''), ' ', '') PERSISTED
)

CREATE INDEX index1 ON table1 (column3) INCLUDE (column1)

DECLARE @var1 VARCHAR(50)
SELECT column1 FROM dbo.table1 WHERE column3=replace(replace(replace(@var1, char(10), ''), char(13), ''), ' ', '')

在表上创建一个持久化的计算列并为其编制索引。