【问题标题】:Is there a way to make selecting query faster?有没有办法让选择查询更快?
【发布时间】:2014-04-11 03:33:26
【问题描述】:

我想从多个表中选择多行,其中一个有数十亿行。有时需要 20 秒,而且有超过数千名用户在使用它,所以非常糟糕。

我查看了 COLUMNSTORE 并在我的本地机器上进行了尝试,性能比平时快了 50 倍! (请注意,我正在清除缓存以查看差异)

但是,缺点是我无法更新、插入和删除行,而对于具有十亿行的表来说,这是不断进行的。

有没有办法优化它? (除了(NOLOCK)脏读,顺便说一句,安全不是问题)

该表中已有索引,但无济于事。

有没有办法执行批量执行(我看到它执行行执行)?或者有什么优化建议?

使用 Microsoft SQL Server 2012

【问题讨论】:

  • 也许查询本身可以优化?你能把它和相应的执行计划贴出来吗?

标签: performance sql-server-2012 query-optimization query-performance


【解决方案1】:

当您达到数十亿行的规模时,您通常需要采用不同的方法来处理数据。将内容分离到多个数据库并存储在不同的机器上可能更有效,但设计要复杂得多。

另一种方法是考虑使用分区表与基于列的索引的组合。这样至少,您可以为分区暂存更新的数据,然后将更新的数据交换为现有的数据以执行更新。见:http://technet.microsoft.com/en-us/library/gg492088.aspx#Update

另一种方法是考虑使用三个表:一个是静态的 - 并且可能使用基于列的存储 - 另一个是动态的,只保存最近的更新和插入,第三个只保存已删除行的列表由主键标识。然后,您必须使用视图来协调查询的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2017-03-26
    • 2017-05-09
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多