Database design 存储大量数据以便快速请求的最佳方法

Database design 存储大量数据以便快速请求的最佳方法,database-design,Database Design,我有一个数据库,在一个速度不太快的服务器上有数百万行,我每周都要获取其中的一些行。问题是,这是关于人的,他们与一个本地化号码相关,但根据分销商的不同,这个号码是不同的 例如,假设我们有X先生 对于分销商A,X先生的本地化为01,但对于分销商B,可能为171 下面是我的数据库现在的样子: Table Person : Identifiant, name, ... Table Distributor-A : Identifiant, localisation, ... Table Distrib

我有一个数据库,在一个速度不太快的服务器上有数百万行,我每周都要获取其中的一些行。问题是,这是关于人的,他们与一个本地化号码相关,但根据分销商的不同,这个号码是不同的

例如,假设我们有X先生 对于分销商A,X先生的本地化为01,但对于分销商B,可能为171

下面是我的数据库现在的样子:

Table Person : Identifiant, name, ...

Table Distributor-A : Identifiant, localisation, ...

Table Distributor-B : Identifiant, localisation, ...
现在和将来只有2个分发服务器,因此我考虑将每周所需的所有信息作为table Person的名称也放在tables分发服务器-[]中,这样我就不必在table Person上进行内部连接,这会让我的查询速度大大减慢

但我也知道,在数据库中的多个位置存储相同的信息通常是个坏主意。然而,我不习惯处理大量重要的数据,我真的需要加快处理速度,所以我需要一些建议


谢谢你抽出时间

嘿,加里,如果我没有正确理解你的问题,请原谅

所以我得到的是,你们有很多人,每个人都有两个分销商不同的本地化编号

比方说,名为JohnDoe的人将其个人信息存储在Persons表中

John与这两个分销商都有关系,因此要从名为Distributor_A和Distributor_B的Distributor表中获取本地化编号,我们需要查询这两个分销商表,那么有什么简单的方法

让我们看看这是否对你有帮助

人员表设计

我们将制作一个名为Localization_numbers的新表

本地化数字表设计

我们将把本地化编号存储在表Distributor_A、Distributor_B和本地化编号中

您只能将本地化编号存储在本地化编号表和放置表Distributor_A和Distributor_B中

您可以将No_a&No_b列的默认值设置为0,这表示此人与分销商没有关系,如果该值不为0,则表示他们与分销商有关系

要选择John Doe的本地化编号,请检查以下示例

Persons table
-- ---- --------- ----- --- 
Id Name Telephone Email Age
-- ---- --------- ----- ---
12 John 010101010 john@ 39
&

现在我们需要在Localization_numbers表中搜索Person_id与Persons表中John的id相同的行,然后我们可以选择No_a和No_b列的值

让我知道这是否有助于你,如果你理解这一点。
谢谢。

您好,在回答之前,我想知道我是否正确理解了您的问题。基本上,您希望更快地从数据库请求数据,为此,您希望将来自person表的个人信息存储为一行&来自两个分发服务器,这样您就不必使用关系了?对吗?您还可以从所有3个表中提供更多的列名,以便我能够理解并尝试相应地重新创建设计。@AmirQureshi您好,是的,就是这样。两个表分发者都是关于分发者本地化如何看待一个人的,表中的人包含的数据总是相同的姓名、电话号码。。有时我只需要从分销商A或B中挑选人员,所以我真的不知道该怎么办有几种可能性。也许在表格中添加本地化-分销商-A和B人员也可以是一个想法?谢谢您的快速回复!我甚至没有想过删除distributors表,因为我们已经习惯于处理它,并在其中导入新数据。但是,如果我们进一步探讨您的想法,将本地化表的No_a和No_b直接存储到Person表中是否是一个好主意?是的,您也可以这样做,新的表方法是保持所有内容干净和简单。
Columns
-- --------- ---- ----
Id Person_id No_a No_b
-- --------- ---- ----
Persons table
-- ---- --------- ----- --- 
Id Name Telephone Email Age
-- ---- --------- ----- ---
12 John 010101010 john@ 39
Localisation_numbers table
-- --------- ---- ----
Id Person_id No_a No_b
-- --------- ---- ----
1  12        348  210