我在选择查询时遇到性能问题。查询可能需要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
如何提高性能以获得结果?
答案 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%'