Select子句中要不要使用*(星号)?

        除了很少数的例外,在绝大多数情况下,使用星号是一种糟糕的编程习惯。 在此还是建议你即使需要被査询表的所有列,也应该显式地指定它们。之所以要这么做, 原因有很多。不像关系模型,SQL会根据在语句中指定的列顺序来保持列的原始位置。通过制定SELECT *,就可以确保查询返冋的列是按照它们的原始位置来返回它们。而客户端应用程序可能通过列的原始位置,而不是名称来引用査询结果出的各列(这确实真不是一种好习惯)。如果表的架构定义有了任何变化(例如,增加或删除了某些列,重新调整了列的顺序,等等),这样就可能导致客户端应用程序运行失败,甚至产生无法注意到的逻辑错误。通过在査询语句中明确指定需要的列,那么只要 某个列在表中存在,就总可以在结果中得到正确的列。如果査询引用的列在表中已经被 删除,结果就得到一个执行错误,这样就能够对代码进行相应的修改。有些人可能会问, 用星号和显式地指定列名在性能上是否有什么不同

        当使用星号时,为了解析列名需要付出一些额外的代价,但与査询过程中无法觉察到的代价相比,这一代价通常可以忽略。即使它们的性能有所不同,差别也是微不足道的, 所以应该尽可能显式地列出列名。无论如何,显式地列出需要的列名是一种值得推荐的实践方法,对SQL代码编写和SELECT列名解析都是一种双贏的策略。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值