SQL Server选择查询性能调优

时间:2019-03-15 22:01:55

标签: sql-server performance tsql

我在选择查询时遇到性能问题。查询可能需要4分钟以上的时间,这太长了,SQL Server表中有50亿条记录。

以下是查询:

Select
    ID,Name,City,locationfile,locationpath
From
    Table
where 
    locationfile like '%euro%'`

输出结果:4分钟内返回了90,000行。

ID primaryKey上的聚集索引

在locationfile上创建的Noclustered Covered Index包括(City,locationpath)

以下是统计信息:逻辑读取10070208,物理读取2,预读10051119

如何提高性能以获得结果?

1 个答案:

答案 0 :(得分:0)

如果您真的无法实现FTS,这是我有点疯狂的建议来强制使用索引:

1)检查多少个char位置文件以及该子字符串“ euro”可以在该字符串中出现的最大charindex是多少。令N为该数字。

2)创建N个生成的持久化列locationfile1,locationfile2,...,其值分别为substring(1,len(locationfile)),substring(2,len(locationfile))等。

3)为所有这些列和locationfile创建索引

4)使用查询 选择     ID,名称,城市,位置文件,位置路径 从     表 哪里     定位文件,例如“ euro%”

UNION

选择     ID,名称,城市,位置文件,位置路径 从     表 哪里     locationfile1,例如“ euro%”

UNION

选择     ID,名称,城市,位置文件,位置路径 从     表 哪里     locationfile2,例如“ euro%”

...等

UNION

选择     ID,名称,城市,位置文件,位置路径 从     表 哪里     locationfileN类似于'euro%'