在 SQL Server 中对大表进行分区的最佳方法是什么?

2024-03-05

在最近的一个项目中,“领导”开发人员设计了一个数据库模式,其中“较大”的表将分为两个单独的数据库,并在主数据库上查看将两个单独的数据库表合并在一起的视图。主数据库是应用程序的驱动源,因此这些表看起来和感觉起来都像普通表(除了更新方面的一些奇怪的事情)。这似乎是一个巨大的性能问题。我们确实看到了这些桌子的性能问题,但没有什么能让他改变对他的设计的想法。只是想知道最好的方法是什么,或者是否值得这样做?


我不认为通过在单个服务器中跨多个数据库对表进行分区来真正获得任何好处。您实际上所做的一切首先是通过在单个 SQL Server 实例下拥有“表”的多个实例(即在两个不同的数据库中打开)来增加使用“表”的开销。

您有多大的数据集?我的一个客户在 SQL Server 中有一个 600 万行的表,其中包含 2 年的销售数据。他们在交易和报告中使用它,没有任何明显的速度问题。

当然,调整索引并选择正确的聚集索引对于性能至关重要。

如果您的数据集非常大并且您希望进行分区,那么在物理服务器上对表进行分区会更划算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 中对大表进行分区的最佳方法是什么? 的相关文章

  • 如何在“order by”中添加条件?

    我有一个带有输入参数的存储过程 现在根据这个参数 我的 order by 语句将发生变化 如果输入参数是 ID int类型列 则按ID排序 如果是 ProductType 则按产品类型排序 如果是 IssueDate 则应按问题日期排序 现
  • INNER/RIGHT/LEFT JOIN 怎么会比 FULL JOIN 慢 14 倍?

    我有一个查询 使用 FULL JOIN 需要 2 5 秒 使用 INNER RIGHT 或 LEFT JOIN 需要 40 秒 这是查询 子查询 完成两次 本身只需要 1 3 秒 SELECT T1 time T1 Total T1 rn
  • 在 SQL Management Studio 2012 中调试

    我正在使用 Management Studio 2012 但无法调试任何 SQL 代码 在我点击 调试 按钮后 左侧没有看到任何绿色箭头 并且我的 SQL 对象都没有加载到内存中 当我将光标移到我设置的断点上时 我收到此消息 The bre
  • Razor C# - 从数据库获取数据

    我正在使用 WebMatrix 我创建了一个数据库并放置了一个包含几行数据的表 我可以连接到它并获取数据WebGrid 但它只提供了一种使用表格输出数据的方法 这是我的 shows cshtml 代码 var db Database Ope
  • 如何在 Postgresql 中将 GIST 或 GIN 索引与 hstore 列一起使用?

    我正在使用 postgresql 9 3 的 hstore 我正在尝试对 hstore 列使用索引就像文档所述 http www postgresql org docs 9 3 static hstore html 我的问题是索引似乎没有被
  • 如何安全地使用保留的 SQL 名称?

    我正在使用 Cakephp 3 使用 sqlserver 作为数据源服务器 我确信我的数据库连接没有问题 因为 home ctp 提示我已连接到我的数据库 并且我还使用迁移插件来创建我的表 似乎使用它没有问题这些工具 但是在我烘焙 MVC
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p
  • 这个 SQL 语句在 Linq 中的等价物是什么?

    我需要将此 SQL 语句移植到 LINQ SELECT f ID as IdFlight Tarif 1 as Tarif f Time f TimeOfArrival sl Name as FromLoc sl Country as Fr
  • SQL Server 登录错误:用户“NT AUTHORITY\SYSTEM”登录失败

    我创建了一个名为 schoolPool 的应用程序池并将其分配给我的 Web 应用程序 该池的标识已设置为 LocalSystem 当我尝试从应用程序内访问数据库 即打开 SQL 连接 时 我总是收到以下错误 Login failed fo
  • 如何获取存储过程中的表列表?

    数据库中有很多表和sp 我找到特定 sp 存储过程 中使用的表名称 sp depends sp name 没有给出想要的结果 我也用过INFORMATION SCHEMA TABLES INFORMATION SCHEMA ROUTINES
  • Postgres LEFT JOIN 与 WHERE 条件

    我需要使用 where 条件左连接两个表 Table time table id rid start date end date 1 2 2017 07 01 00 00 00 2018 11 01 00 00 00 2 5 2017 01
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 查询以查找平均加权价格

    我在 Oracle 中有一个表 每个给定部分包含多行 每行都有一个与其关联的数量和价格 还有一个给定零件的行集相加的总数量 以下是数据示例 我需要的是获得该零件的平均加权价格 例如 如果数量为 100 的零件的价格为 1 数量为 50 的零
  • 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

    我已经使用 Microsoft 查询创建了参数查询 如上所述here https superuser com questions 197453 run an sql query with a parameter from excel 200
  • 用户表到用户和用户首选项。这是正常化了吗?

    我有一张桌子叫Users其偏好列表不断增加 这些首选项可以包括 ReligionId 它将连接到另一个包含宗教列表的表 偏好列表正在不断增加 我想把它分开Users表分成2个表 我认为行之有效的策略是制作一个单独的表 名为UserPrefe
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • T-SQL参数嗅探重新编译计划

    我有 SQL 命令 exec sp executesql N SELECT TOP 10 FROM mytableView WHERE Name LIKE Value0 ORDER BY Id DESC N Value0 varchar 5
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • SQL71501 - 如何消除此错误?

    我们在项目中使用两种模式 dbo kal 当我们尝试使用以下 SQL 语句创建视图时 Visual Studio 在错误列表中显示为错误 CREATE VIEW dbo RechenketteFuerAbkommenOderLieferan

随机推荐