sql数据库查询花费的时间过长

时间:2014-12-23 17:54:24

标签: sql-server

自从我使用SQL和C#.NET以来已经好几年了,所以请保持温和。

我跳进去协助一个同事正在建设的项目。虽然看起来很糟糕。

我试图提供数据库中特定表的直接报告。它上次检查时有9列和大约1.6M行。这很大,但它不足以产生问题。但是,当我使用MS SQL Server Management Studio运行简单查询时,需要11秒。

SELECT *
  FROM [4.0Analytics].[dbo].[Measurement]
  where VIN = 'JTHBJ46G482271076';

我尝试为VIN创建一个索引,但它超时了。 "执行Transact-SQL语句或批处理时发生异常。" "无法为对象分配空间' X'在dabase'你的数据库'因为' PRIMARY'文件组已满#34;

然而,似乎它应该花费更少的时间在第一个位置甚至没有索引,所以我想找出那里可能有什么问题然后接下来的索引超时。除非非索引的简单查询11秒是正常的吗?

2 个答案:

答案 0 :(得分:2)

正如David Gugg所说,你的数据库中没有足够的空间。

检查主文件所在的磁盘上是否有足够的空间。如果磁盘上有足够的空间,请使用以下命令,然后尝试创建索引

USE [master]
GO

ALTER DATABASE [4.0Analytics] 
  MODIFY FILE ( NAME = N'Primary_File_Name'
              , MAXSIZE = UNLIMITED
              , FILEGROWTH = 10%
              )
GO


-- This will allow your database to grow automatically if it runs out of space 
-- provided you have space left on the disk 
-- Now try to create the Index and it should let you create it. 

SELECT *花了太长时间。难怪你在表上放了多少索引如果你正在进行SELECT *,如果你在表上定义了主键,那么它总是会产生Clustered Index Scan,否则就是表扫描。

Try `Select <Column Names>` --<-- Only the columns you actually need 

答案 1 :(得分:1)

  1. 我不建议将数据文件Autogruth设置为百分比[%],它更好 (最佳实践)将其设置为MB增长,例如:

    USE [master] GO

    ALTER DATABASE [YourDataBaseName] MODIFY FILE(NAME = N'YouDataBaseFileName',         FILEGROWTH = 10240KB,         MAXSIZE =无限制) GO

  2. 在索引创建过程中出现的错误是因为索引没有扩展能力。(因为参数MAXSIZE设置为LIMIT值)。

  3. 检查一下你可以做到: 一个。对象资源管理器&gt;&gt;&gt;数据库&gt;&gt;&gt;右键单击请求的数据库&gt;&gt;&gt;转到TAB“文件”。 b.T-SQL:

    选择 FILE_NAME(e.file_id)为[FileName], e.growth, e.max_size, e.is_percent_growth 从sys.master_files e OBJECT_NAME(e.database_id)='YourDatabaseName'的位置 GO