Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中处理大型表_Sql Server_Performance_Database Design_Query Performance - Fatal编程技术网

Sql server 在SQL Server中处理大型表

Sql server 在SQL Server中处理大型表,sql-server,performance,database-design,query-performance,Sql Server,Performance,Database Design,Query Performance,我们有一个只有一个表的SQL SERVER。此表包含5000万行。该表有31列。1个标识列和30个不同大小的nchar列。表大小为15GB 该表包含2017年的信息。最初,表中不会有插入项。但在未来,客户可能希望增加2018年或2016年。目前是查询 查询需要几分钟才能执行。因此,我认为最好每月将表格分成1个表格,因为表格太大了。但是这个解决方案不能满足客户的需求,因为他想查询所有的数据 因此,在这种情况下,处理此表并使其能够快速查询的最佳方法是什么?我将从明显的索引开始。参考: 对于您提到的问

我们有一个只有一个表的SQL SERVER。此表包含5000万行。该表有31列。1个标识列和30个不同大小的nchar列。表大小为15GB

该表包含2017年的信息。最初,表中不会有插入项。但在未来,客户可能希望增加2018年或2016年。目前是查询

查询需要几分钟才能执行。因此,我认为最好每月将表格分成1个表格,因为表格太大了。但是这个解决方案不能满足客户的需求,因为他想查询所有的数据


因此,在这种情况下,处理此表并使其能够快速查询的最佳方法是什么?

我将从明显的索引开始。参考:


对于您提到的问题,您总是可以将表分解为较小的表,为了查询整个数据集,可以从视图中或从包含一些逻辑的存储过程中进行查询。

您能提供有关表结构的详细信息吗?您正在运行什么查询?有30个字符串列是一个很大的危险信号。这些都是实际的字符串,还是数据存储的类型错误?显而易见的答案是索引。一次启动一个查询。或者你可以把它炸开,在每一列上放一个索引。目前,这个问题太广泛了。分解表并不意味着客户不能查询“所有数据”,它只是意味着以不同的方式查询数据。但是@papazzi是正确的,你的第一步应该是索引——在你确保你所有的数据类型对于每个字段中存储的内容都是正确的之后。50M记录/15GB不是一个非常大的表,但是30
nchar
s是关于您的数据模型的问题。@ajmena“思考”(实际上只是猜测)并不是解决问题的有效方法。您有一个包含单个表的数据库,这表明您首先需要数据模型方面的帮助。您有重新设计表格的选项吗?如果不是,则更有效的方法是发布一个执行不佳的示例查询(以及表的DDL)。否则,大家都在猜测。