【问题标题】:How do I change the default SELECT TOP 1000 query to use * instead of each field?如何更改默认的 SELECT TOP 1000 查询以使用 * 而不是每个字段?
【发布时间】:2014-03-03 23:38:10
【问题描述】:

在 SSMS 2008 R2 中,我们有默认的从右键菜单中选择前 1000 个和编辑前 200 个查询。我已经看到您可以在哪里更改它在选项中返回的行数。

我想要的是,我可以告诉它执行 SELECT * 而不是扩展并包含每个字段吗?

这不是性能问题或任何问题,只是在查询超过 5 个字段的表时很烦人,我想做一个 select *。

例如,如果我有一个包含以下字段的表:

  • 名字
  • 姓氏
  • 生日
  • 城市
  • 状态
  • 邮编

当我右键单击此 Persons 表并选择“SELECT TOP 1000 ROWS”菜单时,我希望运行的查询是

SELECT TOP 1000 *  FROM People

不是

SELECT TOP 1000 FirstName, LastName, Birthday, City, State, Zip FROM People

编辑我怀疑这并没有真正的答案,但我想看看是否有人想通了。

【问题讨论】:

  • SELECT TOP 1000 * FROM MyTable。这不行吗?
  • 更新了问题以提供更清晰的信息,我知道如何执行 SELECT *,我想自定义菜单行为。
  • 我不认为这是一个烦恼是相关的。显示一个简单的查询会很好。我也想知道这个问题是否有答案。
  • 这就像衬衫背面的标签一样令人烦恼。有时您想查看洗涤和护理条件,但大多数时候您只想穿衬衫。
  • 你不能。 SSMS 知道 SELECT * 是不好的做法,并且不会从菜单中执行(为什么要鼓励养成坏习惯?)。如果你想使用 SELECT *,你的查询应该足够短,可以自己输入。

标签: sql sql-server-2008


【解决方案1】:

我认为没有任何方法可以自定义本机 SSMS 功能。但是,您可以使用 SSMS tools pack 插件“自定义脚本”来处理此类事情。

(说实话,选择列并输入* 可能与导航菜单一样快)

【讨论】:

  • 我把它标记为答案,因为尽管 select * 输入起来很快,但这个工具还有很多其他用途,我从来不知道它存在。
  • @taylonr - 同意。搜索您执行过的历史查询的能力使其值得单独安装 IMO。
【解决方案2】:

为什么 SSMS 的开发者想要鼓励一种糟糕的做法。既然 select * 确实是一种非常糟糕的做法,他们为什么要鼓励它呢?

我可以看到不想在快速的非生产查询中写入所有字段,但既然它是为你做的,你为什么不希望它正确地做呢?

【讨论】:

  • 事实上,在我们的生产查询中,我们不执行 Select *... 这是我在 mgmt 内部的开发或测试数据库中调查快速而肮脏的东西时...我就像SELECT *的更简洁的文本,但我理解不想鼓励坏习惯。
  • 对我来说,它只会让窗口更具可读性,而不是让所有杂乱无章。
  • 这在生产中是一种糟糕的做法,但是当您进行试验时,它只是杂乱无章。您是否偶然抓住了这些自动查询并将它们投入生产?我只是不使用菜单并回退到手写SELECT * FROM X,因为它真的很短。
  • 我从来没有写过那些自动查询。
【解决方案3】:

这违反了最佳实践,因此 SSMS 不会这样做。

您最好的选择是删除特定列并替换为*,或者只是保留它,因为它正在考虑默认为您选择所有列...

将光标放在TOP n 之后并执行Ctrl-Shift-EndShift-Up* 不需要很长时间,但我明白当您进行测试时,使用* 几乎没有什么区别在完整的列规范中,它使所有内容都更加整洁。

如果您将SSMS Tools Pack 与 SSMS IntelliSense 结合使用,您可能会比滚动、右键单击和选择更快地键入。

【讨论】:

  • 对我来说,每次打开该窗口时删除所有列并替换为* 是一件很痛苦的事。在插件和自动化的今天,你会认为它们可以赋予用户操纵的力量。最佳实践就是最佳实践,但如果我们有自己的理由不使用它们,它不应该强加于我们。
  • @Eli - 我知道你的意思,我只是在更新我的答案以反映这一点:)
  • “这违反了最佳实践,所以 SSMS 不会这样做” - 这只是傲慢的 BS。 (来自 SSMS,而不是 Town。)当表有很多列时,突出显示所有列以删除它们并不是一件容易的事。我不能直接进入 SQL 视图已经很痛苦了,我必须等待它加载一些完全无用的行,然后它才会屈尊让我编辑查询,因为将返回的行数设置为零会导致它获取此结果,返回 ALL 的有效行。
  • SSMS 工具包,虽然收费不高,但按照上面的建议是一个不错的方法。
猜你喜欢
  • 2019-11-13
  • 1970-01-01
  • 2023-03-13
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多