sql-server - SQL Server 在大公司重用缓存查询计划时性能不佳
问题描述
我创建了一个查询来检索特定帐户的销售信息,还创建了一个用于性能的非聚集索引。
大多数时候,查询和索引工作正常。不幸的是,当我在一家销售数据较少的公司执行查询时,它没有执行,然后由一家大公司跟进。
这是因为查询优化器决定直接使用聚集索引而不是设计的非聚集索引,因为当公司数据较少时它更有效。
当在大公司执行相同的查询时,会出现问题,SQL 重用小公司生成的查询计划,这会导致大公司运行缓慢。
有没有更好的选择而不是使用索引提示/覆盖索引?
一些细节:
销售表:
| Company | RunningNumber | Account | SalesAmount | Status|
- 聚集索引已开启
Company, RunningNumber
- 我也有一个非聚集索引
Account, Company
询问
SELECT SUM(SalesAmount)
FROM SalesTable
WHERE Company = @P1 AND Account = @P2
解决方案
推荐阅读
- php - Laravel belongsToThrough 类似的关系
- python - 谷歌表格水平对齐
- javascript - 如何在 Mapbox Javascript 中添加简单的图像叠加层?
- node.js - EJS - 包含返回找不到包含文件“header.ejs”
- c - 如何在文件 *stream 中的特定点停止并扫描某些值?
- java - 休眠:同时有两个或多个事务:事务已处于活动状态
- php - Symfony 截断错误烦人地切断了我的错误消息(截断...)
- google-bigquery - 我如何得到两个日期之间的差异,不包括周末?
- reactjs - 加载器来处理地图中的这种文件类型 ReactJs
- labview - 在本地计算机上运行远程 VI