我有一个有时运行缓慢的应用程序,我认为它与数据库游标有关。
对应用程序源没有任何访问权限,因此我无法控制数据库调用,但数据库已打开,因此我可以在需要的地方添加索引。
问题是我真的不知道如何使用索引加速游标。
游标查询很简单,看起来像
SELECT * FROM table WHERE field1=1 AND field2=2 ORDER BY field3, field4
(表包含大约 1M 行。有时也有一个左连接)
如果我直接在 SSMS 中运行查询,它需要不到一秒的时间,但是当它从游标中的应用程序运行时,可能需要 30 秒来获取第一行(使用 sql-trace 验证)。
WHERE 和 ORDER BY 子句中的字段都是单独索引的。
我猜对 field1,field2,field3,field4 的组合索引会使其更快。有没有办法在不为每个字段组合和顺序创建索引的情况下加快速度?
(重复一遍:我对应用程序如何访问数据库没有影响。性能只能通过索引来调整)