仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 979|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网页设计利用查询剖析器调剂SQL服务器剧本

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:26:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。查询剖析|服务器|剧本我喜好把SQL服务器所绑缚的工具看做是倒金字塔型的,诊断和反省一样平常成绩的工具在顶端,寻觅和诊断成绩详细地区的工具在底部。除供应一种编写SQL剧本的便利体例以外,在你必要办理特定SQL剧本里明白成绩的时分,查询剖析器(QueryAnalyzer)仍是所必要利用的资本。假如你必要指出哪一个查询正在坚持着某个特定表格的锁定形态,你也会但愿利用查询剖析器。
查询剖析器的关头诊断特征是它可以显现某个查询的实行企图。这个实行企图会向你供应各类范例的有效信息,比方在查询的实行时代怎样和什么时候利用大概不利用索引。它还会供应很多其他的细节,比方排序、平行(parallelism)、嵌套轮回,和SQL服务器在实行指定查询时必需做的其他事变。
企图的优点

有了查询剖析器,你就能够检察估计企图而不必要运转查询自己,大概在查询实行以后检察实在的企图。很明显,实在的企图会加倍正确,由于它是从物理上对数据库运转查询的。可是关于体系负载伟大和/或临时的查询,这类办法大概就不是最好的选择了。在典范情形下,当我以为某个特定的查询有成绩的时分,大概假如我估计有一个查询会在使用程序里被充足频仍地挪用以致于大概会招致功能成绩的时分,我就会运转这个工具。
你能够经由过程把SQL表达式输出查询剖析器再按[Ctrl]L来检察估计的实行企图。实行企图然后就会显现在了局(Results)面板的选项卡里。实行企图在刚入手下手的时分大概对照难读,由于它不像英语一样是从左往右读的,而是从右往左读的。

运转中的企图
这里有一个你能够随着做的例子,从这个例子里你能够看到怎样利用查询剖析器来检察一个实行企图。思索一下上面查询,它会从Northwind数据库里前往某个雇员地点的地址和相干区域:

SELECT
TerritoryDescription,RegionDescription
FROM
Employeese
JOINEmployeeTerritoriesetONe.employeeid=et.employeeid
JOINTerritoriestONet.territoryid=t.territoryid
JOINRegionrONt.regionid=r.regionid
WHERE
e.employeeid=1
ORDERBY
TerritoryDescription,RegionDescription

这个查询的了局显现:一号EmployeeId在东部(Eastern)有两个区域,如图A所示。
图A




查询了局图B显现了SQL服务器从示例查询所天生的估计实行。这个图标中的每一个节点都代表着SQL服务期实行示例查询所接纳的步骤。要注重,每一个节点包含一个估计的绝对损耗,和实行企图被显现的时分SQL服务器所利用的每一个索引的称号。
图B


实行企图
你能够把鼠标放在实行企图的每一个节点上以猎取更多关于该步骤的信息,比方该节点所代表的操纵范例、受影响的行数,和和该步相干的损耗的分化。C显现的是图B里针对第一个节点的分外信息。这些弹出窗口里的信息可以提醒你能够对查询做出哪些改善,假如可以改善的话。

图C






和索引调治导游一同利用


你能够将查询剖析器和SQL服务器的索引调治导游(Server’sIndexTuningWizard,ITW)一同利用。我一般利用SQL服务器的Profiler来搜集要送进ITW的数据。可是偶然候,我会利用查询剖析器,假如我以为它代表着我正在举行测试时的某种举动范例的话。你能够从查询(Query)菜单来会见ITW;它可以对在举动编纂面板里的SQL剧本做出功能倡议。

Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 12:06:12 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
爱飞 该用户已被删除
板凳
发表于 2015-1-28 06:54:17 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
山那边是海 该用户已被删除
地板
发表于 2015-2-5 19:31:02 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
第二个灵魂 该用户已被删除
5#
发表于 2015-3-3 19:39:01 | 只看该作者
发几份SQL课件,以飨阅者
精灵巫婆 该用户已被删除
6#
发表于 2015-3-11 13:12:27 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
蒙在股里 该用户已被删除
7#
发表于 2015-3-18 20:39:35 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
柔情似水 该用户已被删除
8#
 楼主| 发表于 2015-3-26 15:54:11 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 11:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表