快速查询数据库中的过多表

kev*_*vin 0 mysql database oracle postgresql

对于非常大的表,索引可能会有很大帮助.但是,对于数据库中的太多小表,解决方案是什么??

如果我有一个大型数据库,其中包含太多表,该怎么办?如何快速查询,因为索引可以帮助加快表的查询?

让我们谈谈一个真实的例子.在stackoverflow.com中,有一张表说." 问题 ".有身份证,约会,投票. 然后在问题表中存在每个id的表.(此表将具有数字ID的名称.例如" q-45588 ")现在很容易索引"问题"表.但是每个问题id的这么多子表怎么样呢.(可能包含ids,答案1,答案2,答案3,评论1,评论2 ......投票,下选票,日期,旗帜,这么多东西)?

这是通常的帐户软件中发生的情况.即.债务人账户表中包含所有债务人的ID,每个账户都有每个表(有债务人的进一步详情)

还是设计问题? *更新*-----------------有些人可能会说在3或4个表中都有(可能有数万亿行),例如问题表,答案表,评论表,用户表.

下面是修改堆栈的一个例子

Catagory of thread:-----info----

Question
Discussion

Catagory of Thread Response:----info-----

A  Answer
c  comment


Theads:----A table-----

Id (key)
Thread Id number (Long data type)
status (active,normal,closed(visible but not editable), deleted, flagged, etc.
type (Ques / Dis)
votes Up
vots Down
count of views
tag 1
tag 2
tag 3
Subject
body
maker ID
date time stramp of time creation
date time stramp of time last activity
A  Answer count
c  comment count




Thread: (table name is thread id (long data type) (in Threads table)----A table-----

id (key)
response text
response type (    A  Answer / c  comment)
vote up
vote down
abuse count
Run Code Online (Sandbox Code Playgroud)

ESG*_*ESG 5

通常,索引旨在通过提供和有序搜索结构来使搜索更快.在一个非常小的表中,由于搜索应该很快开始,它可能没有多大意义.你最好的选择是尝试使用和不使用索引,并相应地进行测量.

话虽如此,如果您的小表具有相同的确切结构,那么将它们合并为单个实体可能更有意义(从RDBMS的角度来看).

  • 最后一个语句的更强版本,强调:具有相同结构的许多表格是不恰当设计的症状.数据添加到应用程序时,数据库中的表数不应更改. (3认同)