回 帖 发 新 帖 刷新版面

主题:[讨论]如果数据库记录数很多,该怎么解决效率问题?

如果俺建一个论坛,比如俺把帖子放在一个表“title”里。如果论坛用户很多,那么这个表的记录数会很多。假设有1000个用户,每个用户发帖1000,就有100万条记录。这样检索起来会很慢。俺考虑如果发现表内记录数超过20万条就增加一个新表,比如“title_1”,依此类推。问题是,如果有多个“title_1”、“title_2”“title_3”……,那么在显示数据的时候俺岂不是要从多个表中select数据出来?这样速度不是会很慢吗? 
还有就是,用什么语句来判断新表“title_1”、“title_2”“title_3”……的存在? 
另外,是不是有更好的解决方法?

回复列表 (共4个回复)

沙发

一般来说这个并不是问题 
一个论坛可能有这么多人,但是不是每个人都有这么多帖子所以记录并不会这么多.
其次是100万记录对SQL基本是没什么压力的,只要不联合查询.
并且你select 的是10/20条数据,这个作一个索引应该好一点.

第三你可以作一个主表记录帖子的主题信息,回贴信息可以用另一个从表记录,这样至少打开帖子列表不会很慢.

板凳


谢谢楼上的解答。
你说100万条记录对SQL Server不是问题,那么对Access数据库呢?
或者,如果是1000万条记录呢?

你说把主帖和回复分两个表,这个是正解。
可是俺的问题是,假设俺要每20万条记录建一个新表,该怎么解决这个问题?如果判断已有的表?
还有就是:如果帖子存在于多个表中,那么显示帖子的时候岂不是要到多个表中去查找,那样效率岂不是很慢?应该怎么解决?

3 楼

dim mydb as database
set mydb=dbengine.workspace(0).opendatabase(要打开的数据库名称,true,false,";pwd=密码")

判断已有的表
for each tdtemp in mydb.TableDefs
    if tdtemp.name="123" then
       msgbox "123表已经存在!"
       exit for
    end if
next

建立一个新表
mydb.CreateTableDef(name)

4 楼

如果帖子存在于多个表中,那么显示帖子的时候岂不是要到多个表中去查找,那样效率岂不是很慢?应该怎么解决?

每次显示一个表的内容或者部分内容
因为记录多,用户不可能一次全部读完

等到翻页时再查询第二个表

我来回复

您尚未登录,请登录后再回复。点此登录或注册