我曾经在一个常见做法是使用Pair Programming的地方工作.我记得在共同编写代码时我们可以相互学习多少小事.随着时间的推移,提取新的快捷方式,代码片段等,显着提高了编写代码的效率.
自从我开始使用SQL Server以来,我一直独自离开.我通常会选择与其他人合作的最佳习惯,这是我现在无法做到的.
所以这是一个问题:
有哪些使用SQL Server Management Studio有效编写TSQL代码的技巧?
请保留2至3个事项/快捷方式的提示,您认为可以提高编码速度
请保持在TSQL和SQL Server Management Studio 2005/2008的范围内如果该功能特定于Management Studio的版本,请指出:例如"仅适用于SQL Server 2008"
编辑:
我担心你可能会被你们中的一些人误解.我不是在寻找有关编写高效TSQL代码的技巧,而是寻求有关如何有效使用Management Studio来加快编码过程本身的建议.
我正在寻找的答案类型是:
使用模板,
键盘快捷键,
使用IntelliSense插件等
基本上那些使编码体验更有效和愉快的小东西.
看看Red Gate的SQL提示 - 这是一个很棒的产品(和Red Gate的大部分贡献一样)
SQL Inform也是一个很好的免费(在线)工具,用于格式化有时失控的长程序.
除此之外,我从痛苦的经历中学到了在任何 DELETE
陈述 之前用a表达是一件好事BEGIN TRANSACTION
.一旦你确定你的陈述只删除它应该的东西,你就可以COMMIT
.
在很多场合救了我;-)
社区拥有的wiki答案 - 随时编辑或添加评论:
键盘快捷键
F5,CTRL+ E或ALT+ X- 执行当前选择的TSQL代码
CTRL+ R- 显示/隐藏结果窗格
CTRL+ N- 打开新的查询窗口
CTRL+ L- 显示查询执行计划
编辑快捷方式
CTRL+ K+ C和CTRL+ K+ U- 注释/取消注释所选代码块(由Unsliced建议)
CTRL+ SHIFT+ U和CTRL+ SHIFT+ L- 将所选文本更改为UPPER /小写
SHIFT+ ALT+选择文本 - 选择/剪切/复制/粘贴矩形文本块
插件
Red Gate的SQL提示 - IntelliSense(由Galwegian提出)
SQLinForm - TSQL的格式(由Galwegian建议)
穷人的T-SQL格式化程序 - 开源格式化插件
其他提示
使用逗号前缀样式(由Cade Roux建议)
使用键盘加速器(由kcrumley建议)
有用的链接
SQL Server Management Studio键盘快捷键(完整列表)
SQL提示符为+1.
我认为我从未见过的非常简单的东西 - 它几乎适用于任何SQL环境(甚至其他语言):
经过12年的SQL编码,我最近在一些SSMS生成的代码中看到它后转换为逗号前缀样式,我发现它非常有效.我很惊讶以前从未见过这种风格,特别是因为它极大地提高了我的生产力.
SELECT t.a ,t.b ,t.c ,t.d FROM t
它可以很容易地编辑选择列表,参数列表,按列表排序,逐个列表等.我发现我花了很少的时间在剪切后添加和删除列表末尾的逗号和粘贴操作 - 我想它更容易实现,因为你几乎总是在最后添加东西,并使用后缀逗号,这需要你更多地移动光标.
尝试一下,你会感到惊讶 - 我知道我是.
我最喜欢的快速提示是,当您在对象资源管理器中展开表名时,只需将单词colums拖到查询屏幕,就会将表中所有列的列表放入查询中.更容易删除你不想要的那些,而不是键入你想要的那些,这很容易,它会阻止人们使用真正糟糕的select*语法.它可以防止错别字.当然,您也可以单独拖动列.
突出显示查询中的实体并按ALT+ F1将为其运行sp_help,为您提供任何列,索引,参数等的细分.
尝试始终使用最小的数据类型,并索引查询中最常用的所有字段.
尽量避免使用服务器端游标.始终坚持使用"基于集合的方法"而不是"程序方法"来访问和操作数据.通常可以通过使用SELECT语句来避免游标.
始终使用查询分析器或SHOWPLAN_TEXT或SHOWPLAN_ALL命令中的图形执行计划来分析查询.确保您的查询执行"索引搜索"而不是"索引扫描"或"表扫描".表扫描或索引扫描是一件非常糟糕的事情,应该尽可能避免.在右列中选择正确的索引.使用更易读的ANSI-Standard Join子句而不是旧式连接.使用ANSI连接时,WHERE子句仅用于过滤数据.与旧样式连接一样,WHERE子句处理连接条件和过滤数据.
不要让您的前端应用程序使用SELECT或INSERT/UPDATE/DELETE语句直接查询/操作数据.而是创建存储过程,并让您的应用程序访问这些存储过程.这使数据访问在应用程序的所有模块中保持干净和一致,同时在数据库中集中业务逻辑.
说到存储过程,不要在存储过程名称前加上"sp_".前缀sp_保留给SQL Server附带的系统存储过程.每当SQL Server遇到以sp_开头的过程名称时,它首先尝试在master数据库中找到该过程,然后查找提供的任何限定符(数据库,所有者),然后尝试dbo作为所有者.因此,您可以通过避免使用"sp_"前缀来节省定位存储过程的时间.
尽可能避免使用动态SQL语句.动态SQL往往比静态SQL慢,因为SQL Server每次都必须在运行时生成执行计划.
如果可能,请尝试使用集成身份验证.这意味着,忘记sa和其他SQL用户,使用microsoft用户配置infra-structure并始终保持SQL服务器,使用所有必需的补丁.Microsoft在开发,测试和发布补丁方面做得很好,但是应用它是你的工作.
在amazon.com上搜索有关它的好评如潮的书籍并购买!
CTRL+ I用于增量搜索.点击F3或CTRL+ I 循环显示结果.
键盘加速器.一旦你弄清楚你写了很多类型的查询,编写实用程序存储过程来自动执行任务,并将它们映射到键盘快捷键.例如,本文讨论了每次想要快速查看该表中的示例数据时如何避免键入"从SomeBigTable中选择前10*".我有一个扩展版本的程序,映射到CTRL+ 5.
还有一些我有:
CTRL+ 0:快速编写表的数据,或proc,UDF或视图的定义
CTRL+ 9:查找名称中包含给定字符串的任何对象(当您知道名称中有"Option"的过程时,您不知道其名称的起始位置)
CTRL+ 7:在其代码中查找包含给定字符串的任何proc,UDF或视图
CTRL+ 4:查找具有给定名称的列的所有表
......还有一些现在还没想到的.其中一些可以通过SSMS中的现有接口来完成,但是SSMS的窗口和小部件加载速度有点慢,尤其是当您通过互联网查询服务器时,我更喜欢不用手拿起我的手键盘无论如何.
只是一个很小的选择 - 矩形选择ALT+ DRAG
非常方便复制+粘贴垂直对齐的列列表(例如,当手动编写大量更新时).编写TSQL是我唯一一次使用它!
如果从对象资源管理器列节点拖动表,则会在查询窗口中为您放置CSV列