-5

我想知道哪种方案更快?

第一种方案:一个表用户,列:cust_id,name,surname(有 100 000 行)

第二种方案:100 000 个由 cust_id 命名的表(每个表中只有一行)

我不问应该怎么做——我知道第二个例子不是很聪明——但我想知道哪个查询更快?查询是否更快

select name from users where cust_id = 194923
-> one result: John Doe

或者

select name from users_194923
-> one result: John Doe
4

3 回答 3

4

100 000 tables真的吗?不要那样做!

显然第二个更快,因为您知道它是什么表并且只有一条记录。但这里有个问题,如果你想搜索 5 个人怎么办?你是怎样做的?如果您不知道该人的存储位置怎么办?

数据库服务器旨在存储大量记录(不是每个表一个记录)。

如果您关心记录的搜索,只需在您要经常搜索的列上定义一个索引。

于 2013-03-15T12:21:33.687 回答
4

只是一个快速的练习:

您认为服务器处理 a 时会发生什么select * from table_123456?发生了各种各样的魔术,但服务器仍然需要确保表是否table_123456存在。在大多数数据库服务器中,验证一个名为存在的表与在一个索引良好的表中table_123456验证一个行是否存在的时间尺度大致相同。id=123456例如,SQL Server 将表的名称保存在名为sys.tables.

想象一下,编写一个返回所有名为“Peter”的用户的查询将是多么有趣。比较这两种方法是错误的。

于 2013-03-15T13:27:43.317 回答
1

您关于第二个模式的问题无关紧要或逻辑较少,因为您无法处理包含 10000 个表的数据库,每个表包含 1 条记录。您必须使用架构 1 ar,它是相关的并在其中显示了一些逻辑。谢谢

于 2013-03-15T13:02:10.523 回答