直到最近,我一直在创建索引(< 20s)并在包含表格的数据库上相对快速地运行大量查询(< 10s)每个最多有大约1000万到1200万行。
我最新的数据库中有每个表最多有4000万行的表,我的索引创建和查询都受到了极大的影响。
- 索引创建超时(即使使用我的工具>选项>设计师>表格和数据库设计人员>交易超时时间提高到120秒)
- 我花了10秒钟的查询现在在SQL Server Management Studio中花了40-50秒(这是合乎逻辑的),但是:
- 那些使用库(RODBC)和sqlQuery()通过R每次花费5-10秒的相同查询现在大约需要4-5分钟。
我正在使用最近升级到SQL Server Management Studio Enterprise的i7(但问题是在升级之前发生的),我需要这些查询至少以半最佳状态运行。
每个查询提取大约200,000个值,但需要遍历整个表;因此,非聚集索引似乎有意义,但索引创建是超时的。
我已经做了什么?:
- 将事务超时从30秒提升到120秒。
- 将索引创建内存(服务器属性>内存)从0增加到33000。
- 每个查询的最小内存从1024增加到3500.
- 创建了一个填充表格的缩小版本(re:400万行):
- 查询时间最佳。 (检索40,000行(10%),~2秒)
- 索引创建是最佳的。 (小于10秒)
我不确定瓶颈在哪里,有什么想法吗?