我想知道哪种方案更快?
第一个方案: 一个表用户的列:cust_id,name,surname(有100 000行)
第二个方案: 由cust_id命名的100 000个表(在每个表中只有一行)
我不知道应该怎么做 - 我知道第二个例子不是很聪明 - 但我想知道哪一个更快查询? 如果查询速度更快
select name from users where cust_id = 194923
-> one result: John Doe
或
select name from users_194923
-> one result: John Doe
答案 0 :(得分:4)
100 000 tables
真的吗?不要那样做!
显然第二个更快,因为你知道它是什么表并且只有一个记录。但是这里有捕获,如果你想搜索5个人怎么办?你是怎样做的?如果您不知道该人的存储位置该怎么办?
数据库服务器旨在存储大量记录(每个表不是一条记录)。
如果您担心搜索记录,只需在您想要搜索的列上定义索引。
答案 1 :(得分:4)
快速练习:
当服务器处理select * from table_123456
时,您认为会发生什么?魔法上发生了各种各样的事情,但服务器仍然需要确保表table_123456
是否存在。在大多数数据库服务器中,验证名为table_123456
的表存在与在良好索引的表中验证是否存在id=123456
的行的时间大小相同。例如,SQL Server将表的名称保存在名为sys.tables
的系统表中。
想象一下编写一个将返回所有名为“Peter”的用户的查询会有多么有趣。比较这两种方法是wronger than wrong。
答案 2 :(得分:1)
关于第二个模式的问题是无关紧要或逻辑较少,因为您无法使用10000个表来处理数据库,每个表包含1个记录。你必须使用模式1,它是相关的,并在其中显示一些逻辑。 感谢