【发布时间】:2012-06-25 17:28:47
【问题描述】:
我在一次采访中被问到如果执行需要大量时间,可以使用哪些方法来优化查询 Select * from TableA。 (TableA) 可以是任何具有大量数据的表。面试官没有给我任何选择,例如选择几列或使用“WHERE”子句,而是希望我为主题查询提供解决方案。
【问题讨论】:
-
你有想过面试官说的话吗?
-
索引、过滤器和键哦,天哪!
-
在某些时候我想他可能是在嘲笑我,我无法得出任何解决方案,这就是我在这里的原因。
-
很难知道他在寻找什么。他可能是相对缺乏经验和期望的答案,例如“列出所有列而不是 *,因为这样更快”或“添加 ORDER BY,因为这总是会加快速度”。有经验的人可能正在寻找的东西是:检查查询计划,看看是否有计算列或其他类似的东西占用额外的资源;重新审视需求——用户真的需要以任意顺序排列整个表格吗?表上是否有聚集索引;如果没有,是否充满了转发指针?
-
这似乎是一个糟糕的、真正开放式的问题,因为有太多不切实际的答案完全取决于你不知道的实际情况;答案如向服务器添加内存以增加缓存、安装更快的网卡、使用分页查询(跳过/采取),因为它是用户感知的缓慢等等。
标签: sql-server tsql query-optimization