优化查询"从表A中选择*"

Adi*_*lil 1 t-sql sql-server query-optimization

我在接受采访时被问到,Select * from TableA如果需要花费大量时间来执行,我可以使用这些方法来优化查询.(TableA)可以是具有大量数据的任何表.面试官没有给我任何选择,如选择几列或使用"WHERE"条款而不是他希望我为主题查询提供解决方案.

Aar*_*and 10

很难知道面试官在寻找什么.

他们可能是相对缺乏经验和预期的答案,如:

  • "列出所有列而不是*,因为这样更快!"; 要么,
  • "添加一个ORDER BY,因为这将永远加快它!"

有经验的人可能会寻找的东西是:

  • 检查查询计划,是否有计算列或其他类似的东西需要额外的资源?
  • 重新审视要求 - 用户是否真的需要按任意顺序排列整个表格?
  • 表上是否有聚簇索引; 如果没有,堆满了转发指针?
  • 基础表上是否有过多的碎片(和/或用于满足查询的索引)?
  • 是被阻止的查询?
  • 什么是查询等待?
  • 是等待外部资源的查询(例如,糟糕的I/O子系统,内存授权,tempdb自动增长)?
  • 是查询并行和痛苦的数据包等待,因为统计数据已过期?

有很多潜在的事情可能使查询变慢可能使该查询成为一个糟糕的选择.