2016-04-15 44 views
1

我今天参加了一次采访。采访者问我有一张名为“研究”的表格。这张表只有10个记录。正常选择查询需要更多时间

现在,当我查询表 select * from Research 它需要更长的时间约20秒。

可能是什么原因?

我无法想象如果一张桌子只有10条记录,这张桌子如何花费这么多时间。

+2

** **堵/极其缓慢的IO子系统:)/挂起/很慢的网络连接...... – lad2025

+0

其他交易我无法说清楚。你能详细写下吗?没有待处理的交易。 – NJadon

+1

这与阻塞相同。想象一下其他一些查询在'Research'表上获得独占锁定(例如更新数据)。在读取提交的隔离级别中,您无法读取它。 – lad2025

回答

1

这个问题有点模糊,取决于他们雇用什么,而不是一个好的。我的猜测是,这个问题是想让你知道你会在这种情况下做什么。像这些问题通常非常具体的问题来自他们亲身经历的问题。有很多事情会导致这种情况。我会问,它一直是这样吗?其他表具有相同的问题吗?把它扔回去。质疑系统构建,数据库和I/O的位置。如果OTJ刚刚开始,我的第一次检查就是确保它们没有用完磁盘空间。主要是因为这是常见的,如果不抓住更多的事情会很快出现错误,如果他们还没有。其次是使用DBCC SHOWCONTIG(Table_Name)检查表的碎片级别。如果这里有一些可怕的#(常见于堆表),一个简单的解决方案是删除并重新创建表。

0

这可能有多种原因:

,一方面一边,“只有10条”可能是有点误导:如果每个的这些记录有几个为nvarchar(最大)列,这可能需要一些时间。此外,如果表格有100列,这将需要更长的时间。其他方面可能会计算成员等。最后但并非最不重要的,如果火过VPN查询,这将是显著慢...

此说:如果你能提供的结构,内容,服务器,连接等一些更多的信息,这将帮助你缩小问题的范围。

+0

即使我没有太多关于它的信息。这是一个面试问题。 – NJadon

+0

如果可以添加更多的可能性会很好。 – NJadon