【问题标题】:table with only one column?只有一列的表?
【发布时间】:2017-05-05 19:25:22
【问题描述】:

我需要创建一个单列表:email

我可以创建一个单列的表并在email 上添加一个聚集索引吗?或者我应该创建和标识列并在email 上做一个非集群?

该表将包含大约一百万个电子邮件地址。

开发人员将使用此表,我想他们只会按照我看到的方式执行where xxxx in (select email from table);,没有其他方法可以使用此表。

我将每周运行一次合并,以插入新电子邮件。不确定我是否应该进行合并,如果它在电子邮件中唯一聚集。我可以插入,希望如果记录重复,它不会插入它并继续其余的,对吗?

【问题讨论】:

  • 单列表不需要索引。索引将如何提供帮助?
  • @sagi,也许知道是否存在?
  • 回答您的问题...是的,您可以。将列创建为 PK,Clustered。如果您尝试插入重复项,则会引发错误,因此您需要进行处理。
  • 嗯,是的,但是在 1MIL 记录表上,我怀疑在性能方面会有任何差异。也许只是在插入时伤害了他们@JuanCarlosOropeza
  • 这取决于该表与其他实体的关系(阅读:表),我不会让每个开发人员编写自己的关系...所以我会找到一个只有一个字段的表没用。

标签: sql-server


【解决方案1】:

这主要是个人选择决定。当您的代码插入/更新/删除时,将标识列作为聚集索引键可以提高性能。

我会将标识列创建为聚集索引,并将电子邮件作为单独的列。将聚集索引键作为一个不断增加的值是理想的。

如果您输入相同的电子邮件两次会怎样?那应该是两个单独的行还是应该导致错误?这些是您在设计此表时要考虑的事项。

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 2023-02-07
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多