【发布时间】:2016-12-19 10:20:06
【问题描述】:
我想执行一些 SELECT 语句以从应用程序数据库(生产环境,而不是测试)中获取一些数据,我会造成任何永久性损坏吗?
我听说不建议使用 SELECT * 因为它会减慢速度等,但我认为从长远来看没有什么会受到影响?它是否会以某种方式损害应用程序用户的应用程序性能超过几秒钟?
【问题讨论】:
-
SELECT 会降低系统速度,某些类型的复杂查询会导致数据缓存在 TempDB 中,从而导致 TempDB 增长。尽管 SELECT 通常不会损坏系统,但它仍然会造成性能不平衡,这取决于数据库系统的关键程度以及您将要做什么。 SELECT * 不会造成自动降级,它更像是在生产工作中最好避免的一种不好的做法,用于快速查看记录没什么大不了的
-
另一件可能出错的事情是记录在编辑模式下被锁定,应该是其他一些开发人员告诉我的,不过我还没有看到。
-
但是您所写的减速和性能不平衡是暂时的,对吧?那么只有真正复杂的 SELECT 查询会使 TempDB 增长,才能永久减慢速度?
-
你不需要任何复杂的东西来吃服务器资源。例如,只是一对相当大的表的 CROSS JOIN。
-
SELLECT * 可能包含不相关的列,这意味着数据传输可能需要一些额外的时间。而已!没什么好担心的。
标签: sql sql-server sql-server-2008 tsql select