如何加快简单的SQL Server 2000查询

时间:2012-07-03 09:17:59

标签: performance sql-server-2000

我有一个product表,列数很多。主键是productid。有50,000行但是当我发出像select * from products这样的select语句时,需要10分钟来获取完整数据。所以建议我做什么,因此我可以更快地运行我的查询。

3 个答案:

答案 0 :(得分:0)

您的主键是否也是该表上的群集密钥

如果您执行SELECT * ....,您基本上始终进行全表扫描。实际上没有任何东西可以加快查询速度 - 你想要所有行,所有列 - 所以你得到了所有这些并且需要花费时间。

如果您执行更多“专注”查询,例如

SELECT col1, col2 FROM dbo.Products WHERE SomeColumn = 42

然后你有机会通过使用适当的索引来加快速度。

答案 1 :(得分:0)

购买更好的电脑。

严重。

SQL Server 2000几年前已经退役,所以这是一个旧的安装。 50.000产品是一个笑话 - 任何低于100万的表都不算什么。

  

但是当我从产品中发出select *这样的select语句时,它需要10分钟   获取完整数据。

假设这是通过局域网而不是通过慢速互联网连接,可能有两个原因:

  • 系统已被严重过载。就像SERIOUS重载一样。不像我在旧的设置上没有看到那样。在那里,看到 - 硬盘如此超载(嘿,它们是SCSI,它们很快),他们花了2秒多的时间来回答请求。
  • 系统由不称职的人编程。可能是糟糕的事务级别处理导致长时间阻塞你的可怕锁定。这是可能的,但是你可以进行大量的返工,以便从编程中获取荒谬的代码。

select * from table不应该花费几秒钟的时间来通过LAN传输所有数据。点。除非捆包有大量的二进制数据(即某些字段中的HUGH数据量)。

作为您当地的数据库专家进行分析。从硬件加载开始,然后转向锁定行为。考虑升级到更现代的技术,到现在为止,你已经落后很多代了。

答案 2 :(得分:-2)

因为没有标准(WHERE),所以查询所花费的时间不是由于选择(确定要选择哪些行),而是由于数据的庞大规模。

唯一的解决方案是:

  

请勿使用SELECT *,而只选择您需要的列。