【问题标题】:Basic query about SQL Server关于 SQL Server 的基本查询
【发布时间】:2011-12-17 04:03:52
【问题描述】:
  1. 为什么使用rowguid,有什么好处?

  2. 假设一家公司有成千上万的客户,为了性能和快速查询,根据性别划分他们是否是一个好方法,如果没有,那么为什么?

  3. 像 Facebook 这样的大公司如何处理他们的 cmets、用户和其他事物的主键,例如:

    假设有五个用户,主键为 1,2,3,4,5...

    如果从那里删除用户 3,现在会留下 1、2、4、5,这是连续链之间的一种间隙。他们是怎么处理的?

【问题讨论】:

  • 你不应该尝试在标题中写问题。保持标题简单,并在正文中提出问题(带有额外信息)
  • 对于#2:您最多有三种性别 - 男性,女性,公司 - 这对大量行没有帮助。另外:对于 SQL Server,包含数千行的表(对于您的所有客户端)没有 - 它可以在单个表中处理数亿行,没问题。

标签: sql-server database


【解决方案1】:
  1. 不知道 - 也许您使用了非自动值,这样您就可以在其他数据库中保持不变(也许用于第 3 部分集成等)

  2. 不要在诸如性别之类的字段上进行划分,当您不知道性别(或想要完整列表)时,您将不得不搜索两个表,当您想要添加其他过滤/搜索时也是如此您将不得不再次处理多个表

  3. 如果 ID 链中存在间隙怎么办 - 它不会影响任何事情。为什么你认为它很重要?

【讨论】:

  • @SaqyGee:不,不要分表。正如 marc_s 在评论中所说,SQL Server 可以处理它而无需担心性能。将一个表拆分为 2 个 1000 行的表可能会比 1 个 10000 行的表(如果不是更多)带来更多的性能损失
  • thx 回答但第二个问题我只是假设一个更准确的例子让我们假设它是否属于 stackoverflow sql server 和 c# 的一个类别,人们会在其中提出有关这些技术的问题,而不是一个好的方法根据这些受人尊敬的技术划分它们,在第三个问题中,我认为这很重要。假设 int 最多可以保存 8 个数字,其中有 1、2、3、4、5 用户,其中用户 3、4、5 是删除的比数据库中的 1,2 剩下的如果更多的用户注册 PK 增量的 1,2,6,7,8 和 9 导致溢出,但我们仍然得到了浪费的索引 3,4,5
  • @SaqyGee:不,这不是一个好主意人为地分割你的桌子!分析您的查询,拥有适当的索引 - 您的 SQL Server 将在单个表中处理 数亿行...
  • @SaqyGee:“int 最多可以保存 8 个数字”是什么意思?我认为您的申请存在严重问题
  • 不,兄弟不要误会我的意思,我知道整数可以保存最多大量的值实际上我正在为我自己的网络构建数据库,我说假设 int 可以保存 8 个数字....你知道网站拥有非常大量的数据,例如 facebook,每天有数百万人发布 cmets,并且来自已发布的 cmets 1000 个也被用户删除......也许 facebook 也会删除较旧的 cmets,所以如果他们不管理他们主要之间的差距键,他们的 PK 会不断增加,总有一天会溢出..我们知道这不会发生,他们有一些技巧--->
猜你喜欢
  • 2016-11-08
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多