我有一个product
表,列数很多。主键是productid
。有50,000行但是当我发出像select * from products
这样的select语句时,需要10分钟来获取完整数据。所以建议我做什么,因此我可以更快地运行我的查询。
答案 0 :(得分:0)
您的主键是否也是该表上的群集密钥?
如果您执行SELECT * ....
,您基本上始终进行全表扫描。实际上没有任何东西可以加快查询速度 - 你想要所有行,所有列 - 所以你得到了所有这些并且需要花费时间。
如果您执行更多“专注”查询,例如
SELECT col1, col2 FROM dbo.Products WHERE SomeColumn = 42
然后你有机会通过使用适当的索引来加快速度。
答案 1 :(得分:0)
购买更好的电脑。
严重。
SQL Server 2000几年前已经退役,所以这是一个旧的安装。 50.000产品是一个笑话 - 任何低于100万的表都不算什么。
但是当我从产品中发出select *这样的select语句时,它需要10分钟 获取完整数据。
假设这是通过局域网而不是通过慢速互联网连接,可能有两个原因:
select * from table不应该花费几秒钟的时间来通过LAN传输所有数据。点。除非捆包有大量的二进制数据(即某些字段中的HUGH数据量)。
作为您当地的数据库专家进行分析。从硬件加载开始,然后转向锁定行为。考虑升级到更现代的技术,到现在为止,你已经落后很多代了。
答案 2 :(得分:-2)
因为没有标准(WHERE),所以查询所花费的时间不是由于选择(确定要选择哪些行),而是由于数据的庞大规模。
唯一的解决方案是:
请勿使用
SELECT *
,而只选择您需要的列。