我有一个内容管理系统,用于存储文章的评论。这些评论可以是线程式的,也可以是非线程式的。尽管从技术上讲它们是相同的,只是当不是线程式时回复列留空。我的应用程序可以在sqlLite、MySQL和pgsql上运行,因此我需要相当标准的SQL。
我目前有一个评论表格。
comment_id
article_id
user_id
comment
timestamp
thread (this is the reply column)
我的问题是如何在数据库中最好地表示分层评论。也许是在支持树集而不包含内容的单独表中,再用一个简单的表来保存文本?或者已经采用的方法?或者另一种方式?
如果评论没有分层结构,我可以很容易地按时间戳排序。
如果它们有分层结构,我会这样排序。
ORDER BY SUBSTRING(c.thread, 1, (LENGTH(c.thread) - 1))
从ORDER BY可以看出,由于基于函数的索引只存在于Oracle中,因此评论查询永远不会使用索引。帮助我让评论页面快如闪电。