zez*_*000 5 .net sql database sql-server asp.net
作为一个不熟悉SQL的人,因为我使用的不是很多,所以我敢肯定对这个问题有答案,但是我不知道要寻找什么才能找到它,所以我深表歉意。
问题:如果我在数据库中有一堆具有很多列的行,但只需要取回更快的ID或它们的速度相同?
SELECT * FROM...
Run Code Online (Sandbox Code Playgroud)
与
SELECT ID FROM...
Run Code Online (Sandbox Code Playgroud)
您特别询问了性能与所有其他要避免的原因SELECT *:所以我将限制我的回答的是性能。
在我的系统上,SQL Profiler 最初表明仅 ID 查询的 CPU 开销较少,但由于涉及较小的 # 或行,每个查询花费的时间相同。
不过,我认为这实际上只是因为首先运行仅 ID 查询。重新运行时(以相反的顺序),它们占用的 CPU 开销同样很少。
这是 SQL Profiler 中的视图:

由于列数和行数极高,行极宽,数据库引擎中可能存在明显的差异,但这里没有什么明显的差异。
您真正会看到差异的地方在于通过网络发送回结果集!当然,仅包含 ID 的结果集通常会小得多,即发回的结果集更少。