选择超过500k记录的语句

时间:2017-07-15 21:01:19

标签: sql-server sql-server-2008 sql-server-express

我正在使用此SELECT声明

SELECT ID, Code, ParentID,... 
FROM myTable WITH (NOLOCK)
WHERE ParentID = 0x0

此规则每15分钟重复一次(通过Windows服务)
问题是当运行此查询时,数据库对其他用户来说变得很慢 查询运行时避免性能下降的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

为您的查询生成执行计划并进行检查。

  • ParentId字段是否已编入索引?
  • 您是否还有其他方法可以优化查询?

是否可以提高托管SQL Server的服务器的性能?

  • 是否需要更多磁盘或RAM?
  • 您是否有用于操作系统,数据,事务日志,临时数据库的单独驱动器(主轴)?

需要考虑的其他事项 - 您是否必须始终从应用程序表中检索此表中的最新值,或者是否可以缓存先前结果并在一段时间内使用这些值?

答案 1 :(得分:-1)

好像你的桌子上有大量的记录。您可以考虑实现页面检索数据。您可以先请求前100行,然后多次调用以获取其余数据。

我仍然不明白需要每隔15分钟运行一次这样的查询。您可以考虑实现一个存储过程,该存储过程可以执行大部分处理并返回一小部分数据。如果它符合您的要求,这将是一个很好的改进。