Sql server sql数据库查询占用的时间过长
我已经好几年没有使用SQL和C.NET了,所以请温柔一点 我是来协助一个同事正在做的项目的。但有些事情似乎很不正常 我试图提供数据库中特定表的直接报告。上次我检查时,它有9列,大约160万行。这是一个很大的问题,但它几乎不足以产生问题。然而,当我使用MSSQLServerManagementStudio运行一个简单的查询时,需要11秒Sql server sql数据库查询占用的时间过长,sql-server,Sql Server,我已经好几年没有使用SQL和C.NET了,所以请温柔一点 我是来协助一个同事正在做的项目的。但有些事情似乎很不正常 我试图提供数据库中特定表的直接报告。上次我检查时,它有9列,大约160万行。这是一个很大的问题,但它几乎不足以产生问题。然而,当我使用MSSQLServerManagementStudio运行一个简单的查询时,需要11秒 SELECT * FROM [4.0Analytics].[dbo].[Measurement] where VIN = 'JTHBJ46G4822710
SELECT *
FROM [4.0Analytics].[dbo].[Measurement]
where VIN = 'JTHBJ46G482271076';
我尝试为VIN创建索引,但它超时了。
执行Transact-SQL语句或批处理时发生异常。
无法在数据库“您的数据集”中为对象“X”分配空间,因为“主”文件组已满
然而,它似乎应该在第一个地方花更少的时间,即使没有索引,所以我想找出哪里可能是错误的,然后进入索引超时下一步。除非11秒对于非索引的简单查询是正常的?正如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.
选择*花费的时间太长。如果在表上定义了主键,那么在表上放置多少个索引就不足为奇了。如果在表上定义了主键,那么它总是会导致聚集索引扫描,否则就是表扫描
Try `Select <Column Names>` --<-- Only the columns you actually need
我不建议将数据文件自动授权设置为百分比[%],这样更好
将其设置为按MB增长的最佳做法,例如:
使用[母版]
去
更改数据库[YourDataBaseName]修改
文件名=N'YouDataBaseFileName',
FILEGROWTH=10240KB,
MAXSIZE=无限制
去
创建索引期间出现的错误为,因为该索引无法扩展。因为参数MAXSIZE设置为LIMIT value
要检查它,您可以通过以下方式进行:
A.对象资源管理器>>>数据库>>>右键单击请求的数据库>>>转到选项卡文件。
b、 T-SQL:
挑选
FILE_NAMEe.FILE_id为[FileName],
e、 成长,,
e、 最大尺寸,
e、 增长率是多少
f从sys.master_文件e
其中OBJECT_NAMEe.database_id='YourDatabaseName'
去
11秒是正常的-您肯定需要VIN上的索引。创建索引时出现的错误听起来像是磁盘空间不足-您能确认吗?160万行,我猜仅此表就约为6.5GB。如果您使用的是sql server express,则必须是2008 r^2或更高版本,其大小限制为10GB。如果HDD大小不是问题所在,SQL server版本也不是问题所在,我建议将文件组初始大小提高一些,而不是自动增长率加上当前数据文件的大小。4.0Analytics是否可以成为另一个服务器/实例/数据库名的同义词?是,从它的声音来看,数据库/表对于分配的空间来说增长太快了。在客户提出解决方案之前,我们将移动它。非常感谢。谢谢你的反馈。这是客户端的服务器,所以我们必须让他们升级。与此同时,我们将尝试将数据移动到我们的服务器上,看看在他们找到解决方案时,数据是否更易于管理。谢谢你的反馈。如果有必要,我会回来的!