在以下情况下如何提高 sql 性能[关闭]

Posted

技术标签:

【中文标题】在以下情况下如何提高 sql 性能[关闭]【英文标题】:how to improve sql performance in below case [closed] 【发布时间】:2015-07-01 01:14:59 【问题描述】:

资源 128 GB RAM,6 TB 空间,Sql server 2014 企业版。

问题:我们的数据库很少有表,包括 5 个 200GB(大约)的“只读表”。 这 5 个表中的每一个都有 5 列(所有列(varchar 100))。 每个 col 都有重复的字符串或值。两列(col3 和 col4)有大约 3500 个重复的唯一字符串或值。

我们唯一的查询是 'select col1......(all columns) from table x where col1 like 'searchstring%' or col2 like 'searchstring%' (只有两个 col 被查询为 OR 子句) 因为这些是唯一的匹配条件。

目前查询需要 1 小时到 1.5 小时才能返回具有当前索引的结果。 我想知道是否有一种有效的方法可以在 5 到 10 分钟内获得结果。 谢谢

【问题讨论】:

您能发布您的查询吗?以及表的创建脚本? 假设您的 OR 条件将在小括号 () 中,例如哪里(col1 like 'searchstring%' 或 col2 like 'searchstring%')。并使用 With (Nolock),例如来自表 x 与 (Nolock) 尝试将“喜欢”改为“包含”,看看是否有帮助:***.com/questions/7510646/… 在执行计划中查看您的查询以找出代价高昂的部分 创建Index 更快获得结果非常有用。 【参考方案1】:

进入 SQL Server Managment Studio 并查看查询的 execution plan。这将向您显示任何推荐的索引以及速率限制步骤(例如 io)。确保您没有cardinality mismatching,并且在大桌子上确保您的statistics 保持最新。

【讨论】:

【参考方案2】:

这完全取决于您的数据库,但我建议尝试将查询拆分为 2 以删除 OR。

我还建议研究功能索引,例如,您可能能够对前 10 个字符进行索引,然后查询可能会更快。

尝试一切,你永远不知道什么会奏效。

【讨论】:

以上是关于在以下情况下如何提高 sql 性能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

loadrunner性能测试,在并发10个用户的情况下,sqlserver服务器cpu平均在80%以上,如何解决

在这种情况下,多线程如何帮助提高性能?

如何提高查询性能?

如何通过在 PL SQL 中根据需要声明 Cursor 来提高性能?

如何提高子查询的性能或 sql 中子查询的替代方案

SQL插入非常慢[关闭]