SQL Server 性能调优4 之书写高效的查询

SQL Server 性能优化最佳实践 在数据驱动的业务场景中,SQL Server 作为企业级关系型数据库的核心,其性能直接影响业务系统的吞吐量和响应速度。无论是应对高并发交易、复杂分析查询,还是处理海量数据写入,性能瓶颈往往隐藏在索引设计、查询逻辑、锁竞争或资源配置中。本文将深入剖析 SQL Server 性能优化的关键技术,从诊断工具使用到实战调优策略,提供一套完整的优化闭环方案。通过本文的监控工具链、索引策略、查询改写技巧和资源配置方法,开发者可系统性地提升数据库性能。按主键范围查询的表:使用自增整型聚集索引。:自动化索引优化建议生成。 阅读详情

限制查询的行和列来提高性能

这条规则非常简单,这里就不细说了。

使用搜索可参数化判断(sargable conditions)来提高性能

Sargable 由 Search ARGument Able 简写而来,字面意思是搜索可参数化?还是比较晦涩哎...

总之使用Sargable判断可以帮助查询优化器更有效地利用索引,并提高采用 index seek 的可能性,我们先把所有的操作符分一下组。

  • Sargable操作符
    • =
    • >
    • >=
    • <
    • <=
    • BETWEEN
    • LIKE (通配符必须出现在最后,比如‘R%’)

  • 非Sargable操作符
    • !=
    • !>
    • !<
    • <>
    • NOT EXISTS
    • IN
    • NOT IN
    • BETWEEN
    • LIKE (通配符出现在前面,比如'%R')
    • NOT LIKE
    • 针对某列的函数

知道了这些你就可以在允许的场合下尽量使用Sargable操作(譬如用多个 OR 来替代 IN)

在判定中巧妙地利用计算操作来提高性能

WHERE 子句中针对列的计算操作会导致非Sargable,间接导致列上的索引无法被有效利用,所以应当尽量避免。不幸的是没有什么自动方法来帮助你找到这些地方,你必须手工检查查询脚本并利用性能工具来定位问题所在。

我们用 AdventureWorks2012 数据库中的两张表来做个例子:

  • [AdventureWorks2012].[HumanResources].[Employee]
  • [AdventureWorks2012].[HumanResources].[EmployeePayHistory]

我们第一个查询抽出 Employee 表的基本信息,并取得对应的 EmployeePayHistory 表中最新的数据,并且满足 HourlyRate*8<=152

SELECT
  E.LoginID
  ,E.JobTitle
  ,E.BirthDate
  ,E.MaritalStatus
  ,E.Gender
  ,E.HireDate
  ,EP.HourlyRate
  ,EP.RateChangeDate
FROM [AdventureWorks2012].[HumanResources].[Employee] AS E
JOIN
(
  Select
    Max(BusinessEntityID) AS BusinessEntityID
    ,Max(RateChangeDate) AS RateChangeDate
    ,Rate AS HourlyRate
  FROM
    [AdventureWorks2012].[HumanResources].[EmployeePayHistory]
  GROUP BY
    Rate
) as EP
ON E.BusinessEntityID=EP.BusinessEntityID
WHERE EP.HourlyRate*8<=152

上面的查询在 WHERE 中进行<=判断前对列进行了一次数字计算(*8),该列上的索引就无法起效了。

对 WHERE 子句稍作修改,就可避免这个问题:

..
..
WHERE EP.HourlyRate<=152/8

修改后在 <= 判断前没有对列进行操作,所以列上的索引会起效。看一下前后的性能指标:


前一个查询占用了53%的开销,后一个占用了47%,两者相差数量级虽然不是非常大,但是随着表数据的增加,差异将逐渐扩大。

不在判定中对列进行函数操作来提高性能

与前一段的原理一样,WHERE 子句中针对列的函数操作会导致“非Sargable”,导致性能下降。这里就不重复举例了。

利用定义参照的完整性来改善性能

定义参照的完整性 (Declarative Referential Integrity),简称 DRI,指利用主键和外键来保证数据库的完整性/一致性。

经常遇到这样的情况:开发者在主表中建立了主键,并用这个主键到子表中去取关联数据,但却没有在子表中建立外键。实际上建立外键不但能帮助你保证数据库的完整性/一致性,还能提高查询关联数据时的性能,我们用一个示例来验证这个说法:

1. 我们新建两张表

IF OBJECT_ID('ProductDemo') IS NOT NULL
  DROP TABLE ProductDemo
GO
IF OBJECT_ID('ProductModelDemo') IS NOT NULL
  DROP TABLE ProductModelDemo
GO
select * into ProductModelDemo from Production.ProductModel
select * into ProductDemo from Production.Product WHERE ProductModelID is not null
GO

2. 在子表 ProductDemo 上声明 ProductModelID 为非空字段,并建立为主键

ALTER TABLE ProductDemo
ALTER COLUMN ProductModelID INT NOT NULL
GO

ALTER TABLE ProductDemo ADD CONSTRAINT [PK_ProductDemo_ProductID]
PRIMARY KEY CLUSTERED
(
  [ProductID] ASC
)
GO

3. 在主表 ProductModelDemo: 上建立主键

ALTER TABLE ProductModelDemo ADD CONSTRAINT [PK_ProductModelDemo_
ProductModelID] PRIMARY KEY CLUSTERED
(
  ProductModelID ASC
)
GO

4. 执行测试查询

SELECT
  P.ProductID
  ,P.ProductModelID
FROM
  ProductDemo AS P
JOIN
  ProductModelDemo AS PM
ON
  P.ProductModelID=PM.ProductModelID
WHERE
  P.ProductID=680
GO

执行计划如下:



5. 建立子父之间的外间关联

ALTER TABLE ProductDemo
WITH CHECK
ADD CONSTRAINT
  FK_ProductDemo_ProductModelDemo_ProductModelID
FOREIGN KEY
  (ProductModelID)
REFERENCES
  ProductModelDemo(ProductModelID)
GO

再次执行第4步的查询,执行计划如下:


修改后的查询只需要在 ProductDemo 表上执行一次索引检索。

在外键字段上定义 NOT NULL,保证了子表中的数据必在父表中存在关联信息,优化器从而“信任”该子表(在不检索父表数据的情况下,不需要再去访问/检查父表)。

“信任”外键来获取性能改进

使用 sys.foreign_keys 系统视图能获取外键的信息,is_not_trusted 字段表示该外键是否被“信任”。

要建立被“信任”的外键可以在创建脚本中使用 WITH CHECK 参数,具体可参照前文的脚本。

备注

最后再添加几点:

  • 尽可能多的指定查询筛选条件
  • 可以不用 ORDER BY 尽量不用
  • GROUP BY 子句中的项目尽可能少,并尽可能取自同一个表
  • GROUP BY 子句中尽量用数字类型的字段,避免用文本
  • GROUP BY 和 ORDER BY 中的字段尽量取自同一个表

PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术 通过结合具体技术特性与工具链的深度使用,可系统化提升数据库性能和稳定性。建议根据实际负载特征制定监控-分析-优化的闭环管理流程。 阅读详情

相关推荐

SQL Server--提取性能最差的查询

该SQL查询用于从SQL Server动态管理视图中提取执行时间最长的10个查询,用于性能分析和调优。主要功能包括:获取查询文本、执行次数、最大耗时(微秒)、平均耗时(毫秒)、查询计划创建时间和执行频率。其中发现一个计算错误:执行频率(FrequencyPerSec)被错误地除以1000。建议重点关注高耗时、高频次的查询,检查索引、参数化等问题,并注意DMV数据在服务器重启后会清零。关键指标包括MaxElapsedTime和AvgElapsedTime,单位需注意区分微秒和毫秒。

weixin_42389352的博客 977

Sql Server 数据查询优化

sql server 查询优化

warlack007的博客 275

12、SQL Server性能调优与优化指南

本文详细介绍了SQL Server性能调优的各个方面,包括如何通过性能计数器、动态管理对象和数据收集器测量性能,如何分析和优化查询执行计划,以及如何使用资源调控器和数据压缩技术提升系统性能。同时,还提供了性能优化的最佳实践和具体示例,帮助读者更好地应对性能挑战。

w8x9y0z1的博客 204

写有效率的SQL查询

[转载]http://www.cnblogs.com/cn_wpf/,非常感谢Nineteen@newsmth 的分分享。 写有效率的SQL查询(I)大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑IO(至于为什么,回头补一篇)。我们常说,“要建彪悍的索引”、“要写高效的SQL”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑IO。1.1     where条件的列...

weixin_34232744的博客 184

深入浅出SQL Server 2005性能调优指南

SQL Server 2005作为一个成熟的关系数据库管理系统,其性能调优对于确保企业级应用的稳定性和响应速度至关重要。性能调优不仅可以提升现有数据库的效率,还能在资源有限的情况下最大化其处理能力。

weixin_32661831的博客 887

SQL Server 2017查询性能调优指南

SQL Server查询优化器是数据库管理系统中至关重要的组件之一。它的核心作用是对用户的SQL查询语句进行分析,选择出最高效的查询执行计划。这个过程极大地依赖于数据表内的统计信息和系统提供的资源信息,其目的是减少查询所消耗的资源,提高查询的响应速度和处理能力。查询优化器的优化结果直接影响到数据库的性能表现,因此,深入了解查询优化器的运作机制对于数据库管理员和开发者来说具有重要价值。存储引擎的选择对数据库的性能至关重要,尤其是在事务处理和并发控制方面。

weixin_34438187的博客 689

SQLServer重建索引

Use [数据库名称] Go DECLARE @DBCCString NVARCHAR(1000) DECLARE @TableName VARCHAR(100) DECLARE Cur_Index CURSOR FOR SELECT Name AS TblName FROM sysobjects WHERE xType='U' ORDER BY...

baheng3656的博客 497

C# 死锁:原理、诊断与解决方案深度解析

本文深入探讨了C#中的死锁问题,详细介绍了死锁的基本概念、形成机制、常见场景、诊断方法及解决方案。死锁通常发生在多线程环境下,当多个线程因争夺资源而互相等待时,导致程序无法继续执行。文章通过代码示例展示了常见的死锁场景,如锁的嵌套、同步上下文死锁和线程池死锁,并提供了使用Visual Studio、WinDbg等工具进行死锁诊断的方法。此外,文章还提出了多种预防和解决死锁的策略,包括保持锁顺序一致性、使用锁超时机制、避免同步阻塞异步代码以及使用更高级的同步原语。通过这些方法,开发者可以有效减少死锁的发生,提

记录学习的过程 1407

如何编写高效的SQL查询语句

概述        操作数据库时,我们需要写相应的SQL语句,当然,如果你是使用

张青山 7479

HFSS与AI融合:智能算法如何重塑天线设计流程

本文探讨了HFSS与AI融合如何通过智能算法革新天线设计流程。在5G/6G通信时代,AI技术如机器学习和遗传算法显著提升了高频电磁场仿真效率,将传统设计周期从数周缩短至数小时,并优化了天线性能。文章详细介绍了AI与HFSS的集成策略、关键技术突破及典型应用案例,展示了智能算法在天线设计中的巨大潜力。

weixin_29035147的博客 774

Zynq7000双核裸机开发实战:如何安全实现共享内存与乒乓RAM设计

本文深入探讨了Zynq7000双核裸机开发中的共享内存与乒乓RAM设计,重点解析了核间通信的Cache一致性处理机制和硬件级实现方案。通过实战代码示例和性能优化技巧,帮助开发者解决双核运行中的访问冲突问题,提升嵌入式系统开发效率。

weixin_29191669的博客 375

查询sql如何使 SQL Server高效 --T-SQL(ITPUT 讨论汇总)

PS:今天上午,非常郁闷,有很多简略基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦! 2、 您认为在T-SQL编写(包括存储进程、函数和视图)上,哪些因素会影响SQL Server效率? 探讨汇总——索引应用 l 没有索引或者没有用到索引、I/O吞吐量小、没有创立盘算列致使查询不优化、锁或者死锁、...

weixin_30750335的博客 178

STM32_WS2811驱动

STM32的WS2811驱动

健身房 2839

SQL Server性能优化实战:从瓶颈定位到高效调优

SQL Server性能优化需结合监控数据、索引策略与代码调优,持续跟踪改进效果。建议定期进行健康检查,并在测试环境验证变更。

xiaoyu❅的博客 2415

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 481

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

SQL Server 执行计划(8) - 使用 SQL 执行计划进行查询性能调优

在本系列的前几篇文章(见底部索引)中,我们经历了 SQL 执行计划的许多方面,我们讨论了执行计划是如何在内部生成的,不同类型的计划,主要组件和运算符以及如何阅读和分析使用不同工具生成的计划。在本文中,我们将展示如何使用执行计划来调整 T-SQL 查询的性能。

信天翁的博客 2316

Gazebo手册:【1】gazebo基本操作案例

欢迎来到初学者模块!本模块将引导您了解 Gazebo 的最基本功能。我们将构建一个简单的车辆来演示这些功能。这些教程适用于 Gazebo 新手和/或没有编程或 Linux 经验的人。 每个教程都建立在上一个教程的基础上,因此我们建议您按顺序学习这些教程。 一、何为Gazebo? Gazebo 是一款 3D 动态模拟器,能够准确有效地模拟复杂室内和室外环境中的机器人种群。虽然类似于游戏引擎,但 Gazebo 提供了更高保真度的物理模拟、一套传感器以及用于用户和程序的接口。 1............

gongdiwudu的专栏 2万+

释放SQL Server潜能:数据库查询性能调优的黄金法则

SQL Server作为微软推出的关系型数据库管理系统,提供了丰富的性能调优工具和策略。本文将深入探讨SQL Server数据库查询性能调优的技巧,并提供实用的代码示例。通过编写高效的SQL语句、合理使用索引、利用查询优化器提示、分析查询执行计划、调整服务器配置和监控系统资源,可以显著提高SQL Server数据库查询的性能。: 本文提供的示例代码仅供参考,实际应用中需要根据具体的数据库架构和业务需求进行调整。SQL Server提供了执行计划分析工具,帮助理解查询的执行方式。:优化的SQL查询语句。

2401_85439108的博客 938

SAP 关于替代料物料混用问题处理方案简介

电子料很多都是需要进行替代的,并且需要考虑当A物料库存不足时,需要考虑B物料的库存来满足需求,当需求不满足的时候也需要考虑物料的价格因素,同时考虑价格低的物料进行采购。3、还遇到过比较奇葩的处理替代料的解决方案就是将SAP系统中的需求数据用接口的方式全部传输到外围系统,同时还将所有物料的库存信息都通过接口的方式传输到外围系统中,然后通过外围系统进行替代料逻辑的处理,然后在回写回SAP更改BOM中的优先级,然后在重新下单,貌似解决了替代料的问题,但是好像又没有解决。时间:2024-01-27。

我小时候很黑的博客 2348

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SQL Server性能优化宝典:探索高级调优技术

在数据库管理中,性能调优是一项至关重要的任务,特别是在面对复杂查询和大规模数据时。本文将深入探讨SQL Server中的高级数据库性能调优技术,包括索引优化、查询优化、资源管理、并行处理等,并提供实际的代码示例。希望本文能够帮助数据库管理员和开发者提高SQL Server的性能,构建高效、稳定的数据库系统。数据库性能调优是一个多方面的工作,需要综合考虑索引优化、查询优化、资源管理和并行处理等多个方面。通过本文的详细介绍,你应该能够理解SQL Server中的高级性能调优技术,并掌握了一些实用的调优方法。

2401_85842555的博客 1606

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SQL Server Samples 性能调优指南:查询优化与自动调优实战

SQL Server 性能调优是每个数据库管理员和开发人员都需要掌握的核心技能。通过 Microsoft 官方的 SQL Server Samples 项目,我们可以学习到从基础查询优化到高级自动调优的完整知识体系。本文将为你展示如何利用这个宝贵的资源库提升数据库性能,让你的应用飞起来!🚀 ## 为什么选择 SQL Server Samples 进行性能调优? SQL Server Samp

gitblog_00539的博客 381

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SQL Server性能调优入门(图文版)

 第一步,在业务高峰期抓取样本数据(2个小时左右)。采用的工具是sqlserver自带的profiler,也叫事件探查器,如下图: 进入后,点击最左面的按钮,建立一个新的跟踪: 登录需要用DBO权限,所以可以用sa登录,也可以用windows集成验证方式(如果当前登录的就是sqlserver的话) 新建跟踪,一共有4个tab页进行配置,首先看第一个。跟踪名称不用更

ulark的专栏 682

sqlserver对外提供连接_SQL Server的性能调优:解决查询速度慢的五种方法

1.使用SQL DMV查找慢速查询SQL Server的一个重要功能是内置于其中的所有动态管理视图(DMV)。它们有数十种,可以提供有关各种主题的丰富信息。有几个DMV提供有关查询统计信息,执行计划,最近查询等的数据。这些可以一起使用,以提供一些惊人的见解。例如,下面的查询可用于查找使用最多读取,写入,工作时间(CPU)等的查询。查询结果如下所示。下面的图片来自我制作的营销应用程序。您可以看到一个...

weixin_39555951的博客 811

SQL Server调优系列基础篇

关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优。通过本篇了解如何阅读和理解查询计划、并且列举一系列最常用的查询执行运算符。

zyypjc的博客 1186
上一篇: SQL Server 性能调优3 之索引(Index)的维护
下一篇: 最佳 .NET 资源清理策略
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值