Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Performance Sql Server大量查询的表-我应该在另一个表中存储辅助信息(html文本)吗_Performance_Sql Server 2008_C# 4.0_Entity Framework 4 - Fatal编程技术网

Performance Sql Server大量查询的表-我应该在另一个表中存储辅助信息(html文本)吗

Performance Sql Server大量查询的表-我应该在另一个表中存储辅助信息(html文本)吗,performance,sql-server-2008,c#-4.0,entity-framework-4,Performance,Sql Server 2008,C# 4.0,Entity Framework 4,概述: 我有一个表“category”,大部分用于对产品进行分类,目前看起来如下: CREATE TABLE [dbo].[Category] ( CategoryId int IDENTITY(1,1) NOT NULL, CategoryNode hierarchyid NOT NULL UNIQUE, CategoryString AS CategoryNode.ToString() PERSISTED, CategoryLevel AS CategoryNode.GetLevel()

概述:

我有一个表“category”,大部分用于对产品进行分类,目前看起来如下:

CREATE TABLE [dbo].[Category]
( 
CategoryId int IDENTITY(1,1) NOT NULL, 
CategoryNode hierarchyid NOT NULL UNIQUE,
CategoryString AS CategoryNode.ToString() PERSISTED,
CategoryLevel AS CategoryNode.GetLevel() PERSISTED,
CategoryTitle varchar(50) NOT NULL,
IsActive bit NOT NULL DEFAULT 1
)
此表被大量查询以显示购物网站上的类别层次结构(通常为每个页面视图),并且可以包含大量的项目

我正在数据层中使用实体框架

问题是:

我需要添加一个可能相当大的“描述”,它可能以网页的整个内容的形式出现,我想知道是否应该将其存储在相关表中,而不是将其添加到现有的类别表中,因为实体框架将拖动“描述”列出数据库的时间为100%,而99.5%的时间我只想要CategoryTitle和CategoryId

通常我不会担心实体框架的开销,但在这种情况下,我认为考虑它可能很重要。我可以通过一个视图或一个存储过程中的复杂类型来解决这个问题,但这意味着我宁愿避免很多重构

我只是想知道是否有人有任何想法,建议或是想拍我的手腕

编辑:


我应该补充一点,我之所以不愿意设置一个辅助表,是因为我不喜欢添加一个与Category表有1:1关系的额外表的想法——这似乎有些毫无意义。但我也不是DBA,所以我不确定这是否是一种可接受的做法。

我将存储在不同的表中,原因很简单,就是不增加类别表中记录的大小。由于这样的VARCHAR列而增加的记录大小将减少可容纳给定磁盘页面(通常大小为4KB)的记录数,从而增加要提取到主存以进行搜索的页面数,增加磁盘访问数,从而影响查询执行时间


我会将其存储在另一个表中(即,将类别表垂直划分为最常访问的列和不常使用的列),并在应用层定义一个
OneToOne
关系,该关系作为主类别实体中的一个成员,包含不常使用的列,将fetch类型设置为LAZY。

您可以将列放入表中,然后创建一个覆盖所有其他列的索引。这样,当您使用当前模式进行所有查找时,将使用索引


这个结构的关键词是覆盖索引:

感谢您的回复,它帮助我重新执行了以这种方式实施它的决定。