主页 > 知识库 > 一次SQL调优数据库性能问题后的过程(300W)

一次SQL调优数据库性能问题后的过程(300W)

热门标签:申请400电话在哪办理流程 一个导航软件能用几个地图标注点 电销外呼有录音系统有哪些 贵州房产智能外呼系统供应商 外呼运营商线路收费 小e电话机器人 临沂智能电销机器人加盟哪家好 百度地图标注改颜色 镇江网路外呼系统供应商
将绝大部分的SQL查询改为存储过程,这样的操作毫无疑问可以提高部分性能。
凡是使用“select * from xxx”的操作一律具体到所需字段。
使用join连接2个以上大量数据的表,且基础数据表变化不大的查询一律使用视图,并为此视图建立索引。理由来自SQL Server联机帮助手册: “对于标准视图而言,为每个引用视图的查询动态生成结果集的开销很大,特别是对于那些涉及对大量行进行复杂处理(如聚合大量数据或联接许多行)的视图。如果在查询中频繁地引用这类视图,可通过对视图创建唯一聚集索引来提高性能。对视图创建唯一聚集索引后,结果集将存储在数据库中,就像带有聚集索引的表一样。
对视图创建索引的另一个好处是:优化器可以在未直接在 FROM 子句中指定某一视图的查询中使用该视图的索引。这样一来,可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。”
凡是使用 "select count(*) from xxx" 或是"select count(id) from xxx”(此处id为主键)的查询,一律改为”select count(1) from xxx”,理论上采用*来做聚合值,SQL Server会自动寻觅最合适的字段以进行聚合,但这样仍然会占用系统开销,即使主键也没有1来得快。
对于多条件的组合查询,我们一般会写成”where ((@condition is null) or (condition=@condition))”形式的存储过程条件来进行查询,但这样的操作会因为”is null ”导致性能问题,反复实地检测后采用了”where 1 = 1 ”,然后根据条件“IF @condition IS NOT NULL SET @sqlText=@sqlText+' AND Condition=''' + @Condition +'''',最后 “exec sp_executesql @sqlText” 的方式,这样确实可带来明显的性能提升,分析应是”is null ”或”is not null”导致了索引失效,进行了全表扫描。
对使用row_number()函数的表建立合适的索引,必须要有最合适的索引才能避免重建索引时的全表row_number()运算带来的性能问题,而且索引的方向也很重要,比如时间类的索引用降序往往比升序性能高。
这个不是性能问题,但也很重要,在存储过程中应使用scope_identity()函数来获得最新的标量,而不是@@Identity这个全局变量,因为@@Identity会受到触发器的影响而失去正确值。
您可能感兴趣的文章:
  • mysql 性能的检查和调优方法
  • Sql server2005 优化查询速度50个方法小结
  • SqlServer 执行计划及Sql查询优化初探
  • MySQL慢查询查找和调优测试
  • sqlserver性能调优经验总结
  • Mysql优化调优中两个重要参数table_cache和key_buffer
  • 10个MySQL性能调优的方法
  • 如何调优SQL Server查询

标签:保定 澳门 三明 合肥 嘉兴 日照 延边 晋城

巨人网络通讯声明:本文标题《一次SQL调优数据库性能问题后的过程(300W)》,本文关键词  一次,SQL,调优,数据库,性能,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《一次SQL调优数据库性能问题后的过程(300W)》相关的同类信息!
  • 本页收集关于一次SQL调优数据库性能问题后的过程(300W)的相关信息资讯供网民参考!
  • 推荐文章